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-02-03 18:21:20
|
Update of /cvsroot/adobe-source/adobe-source/adobe/algorithm In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1031/adobe/algorithm Modified Files: assign.hpp reverse.hpp Log Message: asl 1.0.13 Index: reverse.hpp =================================================================== RCS file: /cvsroot/adobe-source/adobe-source/adobe/algorithm/reverse.hpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** reverse.hpp 6 Jan 2006 18:35:03 -0000 1.1 --- reverse.hpp 3 Feb 2006 18:20:41 -0000 1.2 *************** *** 1,6 **** /* ! 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) */ /*************************************************************************************************/ --- 1,6 ---- /* ! 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) */ /*************************************************************************************************/ *************** *** 36,54 **** I reverse_append(I first, I last, I result) { ! while (first != last) ! { ! I prior(first); ! ++first; ! adobe::unsafe::set_next(prior, result); // Intentional ADL ! result = prior; ! } ! return result; } template <typename R, // R models NodeRange ! typename I> // I models NodeIterator inline I reverse_append(R& range, I result) { ! return adobe::unsafe::reverse_append(boost::begin(range), boost::end(range), result); } --- 36,54 ---- I reverse_append(I first, I last, I result) { ! while (first != last) ! { ! I prior(first); ! ++first; ! adobe::unsafe::set_next(prior, result); // Intentional ADL ! result = prior; ! } ! return result; } template <typename R, // R models NodeRange ! typename I> // I models NodeIterator inline I reverse_append(R& range, I result) { ! return adobe::unsafe::reverse_append(boost::begin(range), boost::end(range), result); } *************** *** 56,60 **** inline I reverse_nodes(I first, I last) { ! return adobe::unsafe::reverse_append(first, last, last); } --- 56,60 ---- inline I reverse_nodes(I first, I last) { ! return adobe::unsafe::reverse_append(first, last, last); } *************** *** 62,66 **** inline typename boost::range_iterator<R>::type reverse_nodes(R& range) { ! return adobe::unsafe::reverse_nodes(boost::begin(range), boost::end(range)); } --- 62,66 ---- inline typename boost::range_iterator<R>::type reverse_nodes(R& range) { ! return adobe::unsafe::reverse_nodes(boost::begin(range), boost::end(range)); } *************** *** 84,88 **** inline void reverse(BidirectionalRange& range) { ! std::reverse(boost::begin(range), boost::end(range)); } --- 84,88 ---- inline void reverse(BidirectionalRange& range) { ! std::reverse(boost::begin(range), boost::end(range)); } *************** *** 90,94 **** inline void reverse_copy(BidirectionalRange& range, OutputIterator result) { ! std::reverse_copy(boost::begin(range), boost::end(range), result); } --- 90,94 ---- inline void reverse_copy(BidirectionalRange& range, OutputIterator result) { ! std::reverse_copy(boost::begin(range), boost::end(range), result); } *************** *** 96,100 **** inline void reverse_copy(const BidirectionalRange& range, OutputIterator result) { ! std::reverse_copy(boost::begin(range), boost::end(range), result); } --- 96,100 ---- inline void reverse_copy(const BidirectionalRange& range, OutputIterator result) { ! std::reverse_copy(boost::begin(range), boost::end(range), result); } Index: assign.hpp =================================================================== RCS file: /cvsroot/adobe-source/adobe-source/adobe/algorithm/assign.hpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** assign.hpp 6 Jan 2006 18:35:03 -0000 1.1 --- assign.hpp 3 Feb 2006 18:20:41 -0000 1.2 *************** *** 1,6 **** /* ! 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) */ --- 1,6 ---- /* ! 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) */ *************** *** 29,35 **** T& assign(const T& x, T& y) { ! T tmp(x); ! adobe::adl_swap(tmp, y); ! return y; } --- 29,35 ---- T& assign(const T& x, T& y) { ! T tmp(x); ! adobe::adl_swap(tmp, y); ! return y; } |
From: Foster B. <fos...@us...> - 2006-02-03 18:21:20
|
Update of /cvsroot/adobe-source/adobe-source/adobe/config/compiler In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1031/adobe/config/compiler Modified Files: gcc.hpp visualc.hpp Log Message: asl 1.0.13 Index: gcc.hpp =================================================================== RCS file: /cvsroot/adobe-source/adobe-source/adobe/config/compiler/gcc.hpp,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** gcc.hpp 6 Jan 2006 18:35:07 -0000 1.2 --- gcc.hpp 3 Feb 2006 18:20:41 -0000 1.3 *************** *** 1,6 **** /* ! 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) */ --- 1,6 ---- /* ! 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) */ *************** *** 13,17 **** #ifndef ADOBE_CONFIG_HPP ! #error "This file is intended to be included by <adobe/config.hpp> -- please use that file directly." #endif --- 13,17 ---- #ifndef ADOBE_CONFIG_HPP ! #error "This file is intended to be included by <adobe/config.hpp> -- please use that file directly." #endif Index: visualc.hpp =================================================================== RCS file: /cvsroot/adobe-source/adobe-source/adobe/config/compiler/visualc.hpp,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** visualc.hpp 6 Jan 2006 18:35:07 -0000 1.2 --- visualc.hpp 3 Feb 2006 18:20:42 -0000 1.3 *************** *** 1,6 **** /* ! 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) */ --- 1,6 ---- /* ! 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) */ *************** *** 13,17 **** #ifndef ADOBE_CONFIG_HPP ! #error "This file is intended to be included by <adobe/config.hpp> -- please use that file directly." #endif --- 13,17 ---- #ifndef ADOBE_CONFIG_HPP ! #error "This file is intended to be included by <adobe/config.hpp> -- please use that file directly." #endif *************** *** 19,41 **** #ifndef ADOBE_TEST_MICROSOFT_NO_DEPRECATE ! #define ADOBE_TEST_MICROSOFT_NO_DEPRECATE 1 #endif #if ADOBE_TEST_MICROSOFT_NO_DEPRECATE ! #if _MSC_VER == 1400 ! /* ! The explanation for this check is explained at ! http://opensource.adobe.com/twiki/bin/view/AdobeSource/MicrosoftVisualCPP8Issues ! */ ! #ifndef _CRT_SECURE_NO_DEPRECATE ! #error "Microsoft 'Safe Standard C Library' is not supported. See <http://opensource.adobe.com/twiki/bin/view/AdobeSource/MicrosoftVisualCPP8Issues>" ! #endif ! #ifndef _SCL_SECURE_NO_DEPRECATE ! #error "Microsoft 'Safe Standard C++ Library' is not supported. See <http://opensource.adobe.com/twiki/bin/view/AdobeSource/MicrosoftVisualCPP8Issues>" ! #endif ! #endif #endif --- 19,41 ---- #ifndef ADOBE_TEST_MICROSOFT_NO_DEPRECATE ! #define ADOBE_TEST_MICROSOFT_NO_DEPRECATE 1 #endif #if ADOBE_TEST_MICROSOFT_NO_DEPRECATE ! #if _MSC_VER == 1400 ! /* ! The explanation for this check is explained at ! http://opensource.adobe.com/twiki/bin/view/AdobeSource/MicrosoftVisualCPP8Issues ! */ ! #ifndef _CRT_SECURE_NO_DEPRECATE ! #error "Microsoft 'Safe Standard C Library' is not supported. See <http://opensource.adobe.com/twiki/bin/view/AdobeSource/MicrosoftVisualCPP8Issues>" ! #endif ! #ifndef _SCL_SECURE_NO_DEPRECATE ! #error "Microsoft 'Safe Standard C++ Library' is not supported. See <http://opensource.adobe.com/twiki/bin/view/AdobeSource/MicrosoftVisualCPP8Issues>" ! #endif ! #endif #endif |
From: Foster B. <fos...@us...> - 2006-02-03 18:21:20
|
Update of /cvsroot/adobe-source/adobe-source/adobe/documentation/sources/gil In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1031/adobe/documentation/sources/gil Modified Files: main.dox Added Files: design_guide.dox tutorial.dox Log Message: asl 1.0.13 Index: main.dox =================================================================== RCS file: /cvsroot/adobe-source/adobe-source/adobe/documentation/sources/gil/main.dox,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** main.dox 9 Jan 2006 19:31:34 -0000 1.2 --- main.dox 3 Feb 2006 18:20:42 -0000 1.3 *************** *** 3,59 **** \ingroup asl_home \author Lubomir Bourdev and Hailin Jin \n ! Advanced Graphics Technology \n ! Adobe Systems Inc. ! ! \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 \section IntroSec Introduction --- 3,8 ---- \ingroup asl_home \author Lubomir Bourdev and Hailin Jin \n ! Advanced Graphics Technology \n ! Adobe Systems Inc. \section IntroSec Introduction *************** *** 63,76 **** \par The library is designed with the following five goals in mind: ! - <b>Generality:</b> Abstracts image representations from algorithms on images. It allows for writing code once and have it work for any image type. ! - <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. ! - <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 (for a minor performance cost comparable to a virtual call overhead). ! - <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. ! - <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 especially optimized. The library works with existing raw pixel data from another image library and can even be integrated into a third-party reference counting mechanism. \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 --- 12,25 ---- \par The library is designed with the following five goals in mind: ! - <b>Generality:</b> Abstracts image representations from algorithms on images. It allows for writing code once and have it work for any image type. ! - <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. ! - <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 (for a minor performance cost comparable to a virtual call overhead). ! - <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. ! - <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 especially optimized. The library works with existing raw pixel data from another image library and can even be integrated into a third-party reference counting mechanism. \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 *************** *** 80,87 **** \section AcknowledgementsSec 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 ! - <b>Bjarne Stroustrup</b> reviewed the core library design */ --- 29,87 ---- \section AcknowledgementsSec 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 ! - <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 */ *************** *** 89,167 **** /// \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 --- 89,167 ---- /// \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 *************** *** 169,251 **** /// \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 --- 169,251 ---- /// \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 --- 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-02-03 18:21:20
|
Update of /cvsroot/adobe-source/adobe-source/adobe/documentation/sources In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1031/adobe/documentation/sources Modified Files: documentation.doxygen Log Message: asl 1.0.13 Index: documentation.doxygen =================================================================== RCS file: /cvsroot/adobe-source/adobe-source/adobe/documentation/sources/documentation.doxygen,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** documentation.doxygen 6 Jan 2006 18:35:19 -0000 1.9 --- documentation.doxygen 3 Feb 2006 18:20:42 -0000 1.10 *************** *** 209,212 **** --- 209,213 ---- "requirements=\par Requirements:" \ "see_also=\par See Also:" \ + "see_only=\par See:" \ "tutorial=\par Tutorial:" \ "type_requirements=\par Type Requirements:" \ *************** *** 494,497 **** --- 495,499 ---- ./asl/algorithm.dox \ ./asl/conversion.dox \ + ./asl/cmath.dox \ ../../future/enum_ops.hpp \ ./asl/eve.dox \ *************** *** 515,519 **** ./widget_lib/widget_reference.dox \ ../../algorithm.hpp \ ! ../../algorithm/reverse.hpp \ ../../array.hpp \ ../../array_fwd.hpp \ --- 517,521 ---- ./widget_lib/widget_reference.dox \ ../../algorithm.hpp \ ! ../../algorithm/reverse.hpp \ ../../array.hpp \ ../../array_fwd.hpp \ *************** *** 525,528 **** --- 527,531 ---- ../../counter.hpp \ ../../conversion.hpp \ + ../../cmath.hpp \ ../../dancing_links.hpp \ ../../dictionary.hpp \ *************** *** 652,659 **** --- 655,668 ---- # 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-02-03 18:21:20
|
Update of /cvsroot/adobe-source/adobe-source In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1031 Modified Files: Jamfile.v2 project-root.jam read_me.txt release_notes.txt Added Files: manifest.jam Log Message: asl 1.0.13 --- NEW FILE: manifest.jam --- import type ; import targets ; import path ; type.register MANIFEST : manifest ; type.register MANIFESTTMPL : manifesttmpl ; import generators ; generators.register-standard manifest.manifest : MANIFESTTMPL : MANIFEST ; rule manifest ( target : source : property-set * ) { if <toolset-msvc:version>8.0 in $(property-set) { if <variant>debug in $(property-set) { .suffix = .msvc8.debug.manifest ; } else { .suffix = .msvc8.release.manifest ; } } else { if <toolset-msvc:version>7.1 in $(property-set) { .suffix = .msvc7.manifest ; } } local srcpath = [ MATCH "^<p(.*)>$" : $(source:G) ] ; local dstpath = [ MATCH "^<p(.*)>$" : $(target:G) ] ; .srcfile = [ path.native "$(srcpath)/$(source:D)/$(source:B)$(.suffix)" ] ; .dstfile = [ path.native "$(dstpath)/$(target:D)$(target:B).manifest" ] ; } actions manifest { copy /Y "$(.srcfile)" "$(.dstfile)" } Index: Jamfile.v2 =================================================================== RCS file: /cvsroot/adobe-source/adobe-source/Jamfile.v2,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** Jamfile.v2 6 Jan 2006 18:35:02 -0000 1.7 --- Jamfile.v2 3 Feb 2006 18:20:41 -0000 1.8 *************** *** 24,35 **** project top : requirements ! <threading>multi ! <include>third_party/boost_tp/boost ! <toolset>msvc:<define>_SCL_SECURE_NO_DEPRECATE ! <toolset>darwin:<cxxflags>"-Werror" ! <toolset>gcc,<variant>debug:<cxxflags>"-Werror" ! $(ARCH) : default-build ! <link>static : build-dir $(BUILD_DIR) --- 24,35 ---- project top : requirements ! <threading>multi ! <include>third_party/boost_tp/boost ! <toolset>msvc:<define>_SCL_SECURE_NO_DEPRECATE ! <toolset>darwin:<cxxflags>"-Werror" ! <toolset>gcc,<variant>debug:<cxxflags>"-Werror" ! $(ARCH) : default-build ! <link>static : build-dir $(BUILD_DIR) *************** *** 44,71 **** case MACOSX : { ! alias boost_filesystem : /boost/filesystem/<arch>fat ; ! alias boost_thread : /boost/thread/<arch>fat ; ! alias boost_signals : /boost/signals/<arch>fat ; } case * : { ! alias boost_filesystem : /boost/filesystem ; ! alias boost_thread : /boost/thread ; ! alias boost_signals : /boost/signals ; } } ! alias asl : adobe//asl ; ! alias asl_dev : adobe//asl_dev ; ! alias adam_smoke : adobe/test/adam_smoke : <variant>debug ; ! alias adam_tutorial : adobe/test/adam_tutorial ; ! alias eve_smoke : adobe/test/eve_smoke ; ! alias forest_smoke : adobe/test/forest_smoke ; ! alias gil : adobe/test/gil ; ! alias md5 : adobe/test/md5 ; ! alias sha : adobe/test/sha ; ! alias xstr_test : adobe/test/xstr_test ; ! alias zuidgen : adobe/test/zuidgen ; --- 44,72 ---- case MACOSX : { ! alias boost_filesystem : /boost/filesystem/<arch>fat ; ! alias boost_thread : /boost/thread/<arch>fat ; ! alias boost_signals : /boost/signals/<arch>fat ; } case * : { ! alias boost_filesystem : /boost/filesystem ; ! alias boost_thread : /boost/thread ; ! alias boost_signals : /boost/signals ; } } ! alias asl : adobe//asl ; ! alias asl_dev : adobe//asl_dev ; ! alias adam_smoke : adobe/test/adam_smoke : <variant>debug ; ! alias adam_tutorial : adobe/test/adam_tutorial ; ! alias cmath : adobe/test/cmath ; ! alias eve_smoke : adobe/test/eve_smoke ; ! alias forest_smoke : adobe/test/forest_smoke ; ! alias gil : adobe/test/gil ; ! alias md5 : adobe/test/md5 ; ! alias sha : adobe/test/sha ; ! alias xstr_test : adobe/test/xstr_test ; ! alias zuidgen : adobe/test/zuidgen ; Index: read_me.txt =================================================================== RCS file: /cvsroot/adobe-source/adobe-source/read_me.txt,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** read_me.txt 6 Jan 2006 18:35:02 -0000 1.16 --- read_me.txt 3 Feb 2006 18:20:41 -0000 1.17 *************** *** 1,3 **** ! Build Instructions 20060105 --- 1,3 ---- ! Build Instructions 20060202 *************** *** 183,190 **** Build fails to run? Check: ! - Boost is in its proper place ! - Boost was properly patched ! - Permissions allow execution of the build scripts ! - Line endings of all files are correct for your platform --- 183,190 ---- Build fails to run? Check: ! - Boost is in its proper place ! - Boost was properly patched ! - Permissions allow execution of the build scripts ! - Line endings of all files are correct for your platform *************** *** 238,242 **** ~/adobe-source/third_party/boost_tp/boost/bin.v2/ (*nix) or ! C:\adobe-source\third_party\boost_tp\boost\bin.v2\ (Windows) - It is possible to create an IDE project for MSVC 7.1 (and probably --- 238,242 ---- ~/adobe-source/third_party/boost_tp/boost/bin.v2/ (*nix) or ! C:\adobe-source\third_party\boost_tp\boost\bin.v2\ (Windows) - It is possible to create an IDE project for MSVC 7.1 (and probably *************** *** 278,290 **** installation options when installing XCode) ! By default the ASL (through BBv2) is set up to build universal binaries ! and libs. In order to disable universal binary building within ASL, open ! up ~/adobe-source/Jamfile.v2 and comment out (or delete) the MACOSX case within the first switch block in the file (dealing with the ARCH and ALIAS_ARCH variables). ! When compiling Adobe Begin note that if you disable universal binary ! building you will have to update the ASL library paths within the XCode ! project to point to the non-universal versions. --- 278,294 ---- installation options when installing XCode) ! By default ASL (via BBv2) is set up to build Universal Binaries. In ! order to disable universal binary building within ASL, open ! ~/adobe-source/Jamfile.v2 and comment out (or delete) the MACOSX case within the first switch block in the file (dealing with the ARCH and ALIAS_ARCH variables). ! To disable building Universal Binaries with the XCode IDE projects, open ! ~/adobe-source/ide_projects/darwin/adobe_all.xcconfig and edit the line ! "ARCHS = i386 ppc" to read just "ARCHS = ppc". Reloading the XCode IDE ! projects at that time will cause Universal Binary support to be dropped, ! building only PowerPC versions of the binaries. Alternatively, you can ! drop "ppc" if you are only interested in building MacTel versions of the ! binaries. Index: project-root.jam =================================================================== RCS file: /cvsroot/adobe-source/adobe-source/project-root.jam,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** project-root.jam 6 Jan 2006 18:35:02 -0000 1.4 --- project-root.jam 3 Feb 2006 18:20:41 -0000 1.5 *************** *** 2,5 **** --- 2,7 ---- path-constant BUILD_DIR : ./bin.v2 ; + import manifest ; + use-project /boost : third_party/boost_tp/boost ; use-project /adobe : adobe/ ; Index: release_notes.txt =================================================================== RCS file: /cvsroot/adobe-source/adobe-source/release_notes.txt,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** release_notes.txt 6 Jan 2006 18:35:02 -0000 1.7 --- release_notes.txt 3 Feb 2006 18:20:41 -0000 1.8 *************** *** 1,3 **** ! Release Notes 20060105 --- 1,3 ---- ! Release Notes 20060202 *************** *** 6,9 **** --- 6,87 ---- ================ + 2006/02/02 + Adam: + - Added adobe::basic_sheet_t, a class used to manage dialog + state-related values, a subset of features of the full Adam + - Added support for "weak" relations. + - Better error reporting for over-contraint cases. + - Unlinked cells are once again allowed to relate to each other when + figuring out whether or not to pin a new value on the model. + - Extended information at: + <http://opensource.adobe.com/twiki/bin/view/AdobeSource/AdamEvolution> + ASL: + - Tabs have been replaced with 4 spaces in the entire ASL code + repository. This includes everything but Doxygen-generated html files + and IDE project files. + base: + - Added a nearest_cast<> from Mark Ruzon. Used it as an excuse to + clean-up the rounding code in ASL to conform with C99 round() and added + "path stability" to Adam solver. + - adobe/cmath.hpp has been augmented to include support for more + C99/TR1 extensions + - Added modal_dialog_interface and adobe::handle_dialog, a + self-contained API used to manage a modal dialog instance, leveraging + Adam, Eve and the ui_core. + - More fixes for stream error reporting has been changed; you now + supply a callback to fetch a line from the stream and the stream + formatter will use the callback before formatting the stream error + Begin: + - Fixing code from Eve parser rework and stripping of widget + serialization and overlay from non-debug builds. + - More examples added to demonstrate various Adam/Eve features + - Much work has been done to improve manifest support for Win32. + Manifest generation has been added MSVC 8 projects. bjam was augmented + with a rule that copies the appropriate manifest file into place + - Reworked the factory_token and setting the root widget display + element in the eve_client_holder, which allows for us to extract the + platform-specific root window view out of it and manipulate it (e.g., + run it under a modal loop). + Boost: + - Unpatched msvc.jam. Use conditional based on msvc-toolset:version + in Begin's Jamfile.v2 instead. Fixes merged 8.0/7.1 settings bug + - Please repatch your Boost distribution + Eve: + - Eve now supports a minimum height and width for containers; Both + the Mac and Win32 ui_core implementations have been updated to leverage + this + - Hide/show updates + GIL: + - Many bug fixes and other improvements + - Updates to the design guide. Added tutorial. + IDE: + - Moved iomanip files from widgets to asl_dev (Mac and Win32) + - MSVC project now has a build directory and copy sheets and + glossary from sources (by Thomas Witt) + Widgets Library: + - Began fixing up static text rect size on win32 + - Fixed a Mac bug where a widget's static disabled text's bounds and + position were incorrect when shown at the first instance + - Resolved the bug where the combo box drop down would take up the + entire screen if there were enough elements. It turned out that this + behavior was being explicitly set (!); now we will show enough room for + all of the elements up to a maximum of 10 (at which point you will get a + scrollbar). This still doesn't verify that the specified size can fit on + the screen (e.g.: Windows PocketPC might have trouble), and uses a fixed + value. (by Ralph Thomas) + - The Mac ui_core implementation has been completely reworked, + removing inheritance and cleaning up general code flow. Consequently the + essentials() and widget serialization hooks have been stripped and + stubbed + - This commit partially addresses the Win32 nested group issue. + There is more information on the fix in the comments of + ui_core_implementation.cpp. Inner groups labels are struck through by + the group line; there may be another message that we can catch to fix + this... dialogs now look better, but still not perfect (by Ralph Thomas) + - Fix Win32 edit_number crashes when label is empty. (by Thomas + Witt) + - Mac ui_core implementation caches widget metrics now, speeding up + metrics-related operations (by Ralph Thomas) + 2006/01/05 - Added the Generic Image Library (GIL). This library allows for |
From: Foster B. <fos...@us...> - 2006-02-03 18:21:08
|
Update of /cvsroot/adobe-source/adobe-source/adobe/test/xstr_bench In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1031/adobe/test/xstr_bench Modified Files: main.cpp Log Message: asl 1.0.13 Index: main.cpp =================================================================== RCS file: /cvsroot/adobe-source/adobe-source/adobe/test/xstr_bench/main.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** main.cpp 6 Jan 2006 18:35:27 -0000 1.2 --- main.cpp 3 Feb 2006 18:20:49 -0000 1.3 *************** *** 1,6 **** /* ! 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) */ --- 1,6 ---- /* ! 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) */ *************** *** 78,97 **** std::string generate_lorem(int min, int max, bool nopunct = false) { ! std::string result; ! std::size_t this_count(std::rand() % (max - min + 1) + min); ! for (std::size_t i(0); i < this_count; ++i) ! { ! if (i != 0) result << " "; ! result << lorem_g[std::rand() % lorem_size_g]; ! } ! if (nopunct) ! for (std::string::iterator first(result.begin()), last(result.end()); first != last; ++first) ! if (!std::isalpha(*first)) ! *first = '_'; ! return result; } --- 78,97 ---- std::string generate_lorem(int min, int max, bool nopunct = false) { ! std::string result; ! std::size_t this_count(std::rand() % (max - min + 1) + min); ! for (std::size_t i(0); i < this_count; ++i) ! { ! if (i != 0) result << " "; ! result << lorem_g[std::rand() % lorem_size_g]; ! } ! if (nopunct) ! for (std::string::iterator first(result.begin()), last(result.end()); first != last; ++first) ! if (!std::isalpha(*first)) ! *first = '_'; ! return result; } *************** *** 100,122 **** void generate_file(int argc, char** argv) { ! std::size_t test_string_count(15000); ! if (argc > 1) ! test_string_count = std::atoi(argv[1]); ! boost::filesystem::path boost_path(glossary_name_g, boost::filesystem::native); ! std::cout << "Generating xstring file with " << test_string_count << " strings..." << std::endl; ! boost::filesystem::ofstream out(boost_path); ! adobe::timer_t gen_timer; ! for (std::size_t i(0); i < test_string_count; ++i) ! out << "<xstr id='" << generate_lorem(2, 5, true) << "-" << i << "'>" << generate_lorem(1, 30) << "</xstr>" << std::endl; ! gen_timer.report("Generation"); ! out.close(); } --- 100,122 ---- void generate_file(int argc, char** argv) { ! std::size_t test_string_count(15000); ! if (argc > 1) ! test_string_count = std::atoi(argv[1]); ! boost::filesystem::path boost_path(glossary_name_g, boost::filesystem::native); ! std::cout << "Generating xstring file with " << test_string_count << " strings..." << std::endl; ! boost::filesystem::ofstream out(boost_path); ! adobe::timer_t gen_timer; ! for (std::size_t i(0); i < test_string_count; ++i) ! out << "<xstr id='" << generate_lorem(2, 5, true) << "-" << i << "'>" << generate_lorem(1, 30) << "</xstr>" << std::endl; ! gen_timer.report("Generation"); ! out.close(); } *************** *** 125,140 **** std::size_t do_test(adobe::file_slurp<char>& slurp, adobe::timer_t& timer) { ! slurp.reslurp(); ! timer.reset(); ! adobe::xstring_context_t context( slurp.begin(), slurp.end(), ! adobe::line_position_t(glossary_name_g)); ! timer.accrue(); ! slurp.release(); ! return adobe::implementation::top_frame().glossary_m.size(); } --- 125,140 ---- std::size_t do_test(adobe::file_slurp<char>& slurp, adobe::timer_t& timer) { ! slurp.reslurp(); ! timer.reset(); ! adobe::xstring_context_t context( slurp.begin(), slurp.end(), ! adobe::line_position_t(glossary_name_g)); ! timer.accrue(); ! slurp.release(); ! return adobe::implementation::top_frame().glossary_m.size(); } *************** *** 147,196 **** int main(int argc, char** argv) { ! int result(0); ! std::srand(std::time(NULL)); ! try ! { ! boost::filesystem::path boost_path(glossary_name_g, boost::filesystem::native); ! if (!boost::filesystem::exists(boost_path)) ! generate_file(argc, argv); ! adobe::file_slurp<char> slurp(boost_path); ! adobe::timer_t timer; ! std::size_t repeat_count(20); ! std::size_t count(0); ! std::cout << "Repeating test " << repeat_count << " times..." << std::endl; ! for (std::size_t i(0); i < repeat_count;) ! { ! count = std::max(count, do_test(slurp, timer)); ! std::cerr << ++i << " "; ! } ! std::cout << std::endl; ! double avg(timer.accrued_average()); ! std::cout << "Average time taken: " << avg << " milliseconds (" << avg / 1e3 << " sec)" << std::endl; ! std::cout << "Found " << count << " parsed elements in glossary." << std::endl; ! } ! catch (const std::exception& doh) ! { ! std::cerr << "Exception: " << doh.what() << "\n"; ! result = 1; ! } ! catch (...) ! { ! std::cerr << "Unknown Exception\n"; ! result = 1; ! } ! return result; } --- 147,196 ---- int main(int argc, char** argv) { ! int result(0); ! std::srand(std::time(NULL)); ! try ! { ! boost::filesystem::path boost_path(glossary_name_g, boost::filesystem::native); ! if (!boost::filesystem::exists(boost_path)) ! generate_file(argc, argv); ! adobe::file_slurp<char> slurp(boost_path); ! adobe::timer_t timer; ! std::size_t repeat_count(20); ! std::size_t count(0); ! std::cout << "Repeating test " << repeat_count << " times..." << std::endl; ! for (std::size_t i(0); i < repeat_count;) ! { ! count = std::max(count, do_test(slurp, timer)); ! std::cerr << ++i << " "; ! } ! std::cout << std::endl; ! double avg(timer.accrued_average()); ! std::cout << "Average time taken: " << avg << " milliseconds (" << avg / 1e3 << " sec)" << std::endl; ! std::cout << "Found " << count << " parsed elements in glossary." << std::endl; ! } ! catch (const std::exception& doh) ! { ! std::cerr << "Exception: " << doh.what() << "\n"; ! result = 1; ! } ! catch (...) ! { ! std::cerr << "Unknown Exception\n"; ! result = 1; ! } ! return result; } |
From: Foster B. <fos...@us...> - 2006-02-03 18:21:03
|
Update of /cvsroot/adobe-source/adobe-source/third_party/boost_tp/adobe In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1031/third_party/boost_tp/adobe Modified Files: boost_1_33_1_patch_01.txt patch_boost.sh Log Message: asl 1.0.13 Index: boost_1_33_1_patch_01.txt =================================================================== RCS file: /cvsroot/adobe-source/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:35:28 -0000 1.2 --- boost_1_33_1_patch_01.txt 3 Feb 2006 18:20:50 -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 *************** *** 129,161 **** flags $(toolset).link RPATH_LINK $(condition) : <xdll-path> : unchecked ; } - 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 --- 152,153 ---- Index: patch_boost.sh =================================================================== RCS file: /cvsroot/adobe-source/adobe-source/third_party/boost_tp/adobe/patch_boost.sh,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** patch_boost.sh 6 Jan 2006 18:35:28 -0000 1.5 --- patch_boost.sh 3 Feb 2006 18:20:50 -0000 1.6 *************** *** 8,18 **** if [ ! -d boost_1_33_1 ]; then ! echo "You must have a source directory (boost_1_33_1) in order to patch!" ! exit 1; fi if [ ! -d boost ]; then ! echo "You must have a destination directory (boost) in order to patch!" ! exit 1; fi --- 8,18 ---- if [ ! -d boost_1_33_1 ]; then ! echo "You must have a source directory (boost_1_33_1) in order to patch!" ! exit 1; fi if [ ! -d boost ]; then ! echo "You must have a destination directory (boost) in order to patch!" ! exit 1; fi |
From: Foster B. <fos...@us...> - 2006-02-03 18:21:03
|
Update of /cvsroot/adobe-source/adobe-source/adobe/test/xstr_test In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1031/adobe/test/xstr_test Modified Files: main.cpp Log Message: asl 1.0.13 Index: main.cpp =================================================================== RCS file: /cvsroot/adobe-source/adobe-source/adobe/test/xstr_test/main.cpp,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** main.cpp 6 Jan 2006 18:35:27 -0000 1.8 --- main.cpp 3 Feb 2006 18:20:49 -0000 1.9 *************** *** 1,6 **** /* ! 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) */ --- 1,6 ---- /* ! 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) */ *************** *** 48,64 **** /****************************************************************************************************/ ! adobe::token_range_t sample_handler(const adobe::token_range_t& entire_element_range, ! const adobe::token_range_t& name, ! const adobe::attribute_set_t& attribute_set, ! const adobe::token_range_t& value) { ! if (name == adobe::static_token_range("br")) ! return adobe::xml_element_linefeed(entire_element_range, name, attribute_set, value); ! else if (name == adobe::static_token_range("b")) ! // just for kicks: keep all bold tags found in the output ! return adobe::xml_element_echo(entire_element_range, name, attribute_set, value); ! else ! // if the tags aren't what we want, strip the tag ! return adobe::xml_element_strip(entire_element_range, name, attribute_set, value); } --- 48,64 ---- /****************************************************************************************************/ ! adobe::token_range_t sample_handler(const adobe::token_range_t& entire_element_range, ! const adobe::token_range_t& name, ! const adobe::attribute_set_t& attribute_set, ! const adobe::token_range_t& value) { ! if (name == adobe::static_token_range("br")) ! return adobe::xml_element_linefeed(entire_element_range, name, attribute_set, value); ! else if (name == adobe::static_token_range("b")) ! // just for kicks: keep all bold tags found in the output ! return adobe::xml_element_echo(entire_element_range, name, attribute_set, value); ! else ! // if the tags aren't what we want, strip the tag ! return adobe::xml_element_strip(entire_element_range, name, attribute_set, value); } *************** *** 67,158 **** int main(int argc, char* argv[]) { ! int result(0); ! try ! { ! std::string glossary_name("../default.xstr"); ! if (argc > 1) glossary_name.assign(argv[1]); ! bfs::path glossary(glossary_name.c_str(), argc > 1 ? bfs::native : bfs::portable_name); ! adobe::file_slurp<char> glossary_slurp(glossary); ! adobe::xstring_context_t context(glossary_slurp.begin(), glossary_slurp.end(), ! adobe::line_position_t(glossary_name.c_str())); ! glossary_slurp.release(); ! context.set_preorder_predicate(adobe::always_true<adobe::token_range_t>()); ! context.set_element_handler(sample_handler); #if 1 ! adobe::implementation::context_frame_t& context_frame(adobe::implementation::top_frame()); ! std::cout << "Parsed " ! << static_cast<unsigned int>(context_frame.glossary_m.size()) ! << " elements:" << std::endl; ! typedef adobe::implementation::context_frame_t::store_t::iterator iterator; ! for ( iterator first(context_frame.glossary_m.begin()), last(context_frame.glossary_m.end()); ! first != last; ++first) ! std::cout << " " << to_string(first->second.second) << std::endl; #endif ! std::string xstr(adobe::xstring("<xstr id='mixed_test'/>")); ! std::cout << xstr << std::endl; ! std::string xstr2; ! adobe::xstring("<xstr id='entity_ref_test'/>", std::back_inserter(xstr2)); ! std::cout << xstr2 << std::endl; ! std::cout << adobe::xstring("<xstr id='markup_test_2'/>") << std::endl; ! std::cout << adobe::xstring("<xstr id='meganested_example'/>") << std::endl; ! std::cout << adobe::xstring("<xstr id='ok' lang='fr' platform='macintosh'/>") << std::endl; ! std::cout << "Inline xstring test:" << std::endl; ! std::cout << adobe::xstring("This is a test of the <xstr id='emergency'>emergency</xstr> broadcast <xstr id='system'>system</xstr>.") << std::endl; ! std::cout << "Nested xstring test:" << std::endl; ! std::cout << adobe::xstring("Nesting <xstr id='nesting_inside_0'>is a fun <xstr id='nesting_inside_1'>thing</xstr> to do</xstr>, don'chaknow") << std::endl; ! std::cout << "eacute test:" << std::endl; ! std::cout << adobe::xstring("<xstr id='eacute'>é</xstr>") << std::endl; ! std::cout << "Marker Replacement Tests:" << std::endl; ! std::string good_thing(adobe::xstring("<xstr id='a_good_thing'/>")); ! std::string bad_thing(adobe::xstring("<xstr id='a_bad_thing'/>")); ! std::string neutral_thing(adobe::xstring("<xstr id='a_neutral_thing'/>")); ! std::cout << "good marker: " << good_thing << std::endl; ! std::cout << "bad marker: " << bad_thing << std::endl; ! std::cout << "neutral marker: " << neutral_thing << std::endl; ! std::cout << "Good: " << xstring_replace(adobe::static_name_t("replacement_test_1"), good_thing) << std::endl; ! std::cout << "Bad: " << xstring_replace(adobe::static_name_t("replacement_test_1"), bad_thing) << std::endl; ! std::cout << "Neutral: " << xstring_replace(adobe::static_name_t("replacement_test_1"), neutral_thing) << std::endl; ! } ! catch (const std::exception& doh) ! { ! std::cerr << "Exception: " << doh.what() << "\n"; ! result = 1; ! } ! catch (...) ! { ! std::cerr << "Unknown Exception\n"; ! result = 1; ! } ! return result; } --- 67,158 ---- int main(int argc, char* argv[]) { ! int result(0); ! try ! { ! std::string glossary_name("../default.xstr"); ! if (argc > 1) glossary_name.assign(argv[1]); ! bfs::path glossary(glossary_name.c_str(), argc > 1 ? bfs::native : bfs::portable_name); ! adobe::file_slurp<char> glossary_slurp(glossary); ! adobe::xstring_context_t context(glossary_slurp.begin(), glossary_slurp.end(), ! adobe::line_position_t(glossary_name.c_str())); ! glossary_slurp.release(); ! context.set_preorder_predicate(adobe::always_true<adobe::token_range_t>()); ! context.set_element_handler(sample_handler); #if 1 ! adobe::implementation::context_frame_t& context_frame(adobe::implementation::top_frame()); ! std::cout << "Parsed " ! << static_cast<unsigned int>(context_frame.glossary_m.size()) ! << " elements:" << std::endl; ! typedef adobe::implementation::context_frame_t::store_t::iterator iterator; ! for ( iterator first(context_frame.glossary_m.begin()), last(context_frame.glossary_m.end()); ! first != last; ++first) ! std::cout << " " << to_string(first->second.second) << std::endl; #endif ! std::string xstr(adobe::xstring("<xstr id='mixed_test'/>")); ! std::cout << xstr << std::endl; ! std::string xstr2; ! adobe::xstring("<xstr id='entity_ref_test'/>", std::back_inserter(xstr2)); ! std::cout << xstr2 << std::endl; ! std::cout << adobe::xstring("<xstr id='markup_test_2'/>") << std::endl; ! std::cout << adobe::xstring("<xstr id='meganested_example'/>") << std::endl; ! std::cout << adobe::xstring("<xstr id='ok' lang='fr' platform='macintosh'/>") << std::endl; ! std::cout << "Inline xstring test:" << std::endl; ! std::cout << adobe::xstring("This is a test of the <xstr id='emergency'>emergency</xstr> broadcast <xstr id='system'>system</xstr>.") << std::endl; ! std::cout << "Nested xstring test:" << std::endl; ! std::cout << adobe::xstring("Nesting <xstr id='nesting_inside_0'>is a fun <xstr id='nesting_inside_1'>thing</xstr> to do</xstr>, don'chaknow") << std::endl; ! std::cout << "eacute test:" << std::endl; ! std::cout << adobe::xstring("<xstr id='eacute'>é</xstr>") << std::endl; ! std::cout << "Marker Replacement Tests:" << std::endl; ! std::string good_thing(adobe::xstring("<xstr id='a_good_thing'/>")); ! std::string bad_thing(adobe::xstring("<xstr id='a_bad_thing'/>")); ! std::string neutral_thing(adobe::xstring("<xstr id='a_neutral_thing'/>")); ! std::cout << "good marker: " << good_thing << std::endl; ! std::cout << "bad marker: " << bad_thing << std::endl; ! std::cout << "neutral marker: " << neutral_thing << std::endl; ! std::cout << "Good: " << xstring_replace(adobe::static_name_t("replacement_test_1"), good_thing) << std::endl; ! std::cout << "Bad: " << xstring_replace(adobe::static_name_t("replacement_test_1"), bad_thing) << std::endl; ! std::cout << "Neutral: " << xstring_replace(adobe::static_name_t("replacement_test_1"), neutral_thing) << std::endl; ! } ! catch (const std::exception& doh) ! { ! std::cerr << "Exception: " << doh.what() << "\n"; ! result = 1; ! } ! catch (...) ! { ! std::cerr << "Unknown Exception\n"; ! result = 1; ! } ! return result; } |
From: Foster B. <fos...@us...> - 2006-02-03 18:21:03
|
Update of /cvsroot/adobe-source/adobe-source/adobe/test/unicode In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1031/adobe/test/unicode Modified Files: main.cpp Log Message: asl 1.0.13 Index: main.cpp =================================================================== RCS file: /cvsroot/adobe-source/adobe-source/adobe/test/unicode/main.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** main.cpp 6 Jan 2006 18:35:27 -0000 1.2 --- main.cpp 3 Feb 2006 18:20:49 -0000 1.3 *************** *** 1,6 **** /* ! 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) */ --- 1,6 ---- /* ! 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) */ *************** *** 21,86 **** void roundtrip_test(boost::uint32_t code_point, bool print = true) { ! /* ! We need to flex all parts of the unicode API given the code point that is passed in. ! This includes: ! - utf32 -> utf8 -> utf32 ! - utf32 -> utf16 -> utf32 ! - utf16 -> utf8 -> utf16 ! */ ! typedef std::vector<boost::uint32_t> utf32_buffer_t; ! typedef std::vector<boost::uint16_t> utf16_buffer_t; ! typedef std::vector<boost::uint8_t> utf8_buffer_t; ! utf16_buffer_t utf16; ! utf8_buffer_t utf8; ! adobe::to_utf16(code_point, std::back_inserter(utf16)); ! adobe::to_utf8(code_point, std::back_inserter(utf8)); ! utf32_buffer_t utf16_roundtrip; ! utf32_buffer_t utf8_roundtrip; ! if (print) ! { ! std::cout << "Flexing API for code point 0x" << std::hex << code_point << "..." << std::endl; ! std::cout << " utf16 encoding is"; ! for (utf16_buffer_t::iterator first(utf16.begin()), last(utf16.end()); first != last; ++first) ! std::cout << " 0x" << static_cast<boost::uint32_t>(*first); ! std::cout << std::endl; ! std::cout << " utf8 encoding is"; ! for (utf8_buffer_t::iterator first(utf8.begin()), last(utf8.end()); first != last; ++first) ! std::cout << " 0x" << static_cast<boost::uint32_t>(*first); ! std::cout << std::endl; ! std::cout << std::dec; ! } ! adobe::to_utf32(utf16.begin(), utf16.end(), std::back_inserter(utf16_roundtrip)); ! adobe::to_utf32(utf8.begin(), utf8.end(), std::back_inserter(utf8_roundtrip)); ! if (utf16_roundtrip[0] != code_point) ! throw std::runtime_error("In utf32 -> utf16 -> utf32: code point mismatch"); ! else if (utf8_roundtrip[0] != code_point) ! throw std::runtime_error("In utf32 -> utf8 -> utf32: code point mismatch"); ! utf8_buffer_t utf8_2; ! utf16_buffer_t utf16_2; ! adobe::to_utf8(utf16.begin(), utf16.end(), std::back_inserter(utf8_2)); ! adobe::to_utf16(utf8.begin(), utf8.end(), std::back_inserter(utf16_2)); ! utf32_buffer_t utf16_roundtrip_2; ! adobe::to_utf32(utf16_2.begin(), utf16_2.end(), std::back_inserter(utf16_roundtrip_2)); ! ! if (utf16_roundtrip_2[0] != code_point) ! throw std::runtime_error("In utf16 -> utf8 -> utf16: code point mismatch"); ! if (print) ! { ! std::cout << " code point 0x" << std::hex << code_point << std::dec << " ("; ! adobe::copy(utf8, std::ostream_iterator<char>(std::cout)); ! std::cout << ") roundtripped successfully." << std::endl; ! } } --- 21,86 ---- void roundtrip_test(boost::uint32_t code_point, bool print = true) { ! /* ! We need to flex all parts of the unicode API given the code point that is passed in. ! This includes: ! - utf32 -> utf8 -> utf32 ! - utf32 -> utf16 -> utf32 ! - utf16 -> utf8 -> utf16 ! */ ! typedef std::vector<boost::uint32_t> utf32_buffer_t; ! typedef std::vector<boost::uint16_t> utf16_buffer_t; ! typedef std::vector<boost::uint8_t> utf8_buffer_t; ! utf16_buffer_t utf16; ! utf8_buffer_t utf8; ! adobe::to_utf16(code_point, std::back_inserter(utf16)); ! adobe::to_utf8(code_point, std::back_inserter(utf8)); ! utf32_buffer_t utf16_roundtrip; ! utf32_buffer_t utf8_roundtrip; ! if (print) ! { ! std::cout << "Flexing API for code point 0x" << std::hex << code_point << "..." << std::endl; ! std::cout << " utf16 encoding is"; ! for (utf16_buffer_t::iterator first(utf16.begin()), last(utf16.end()); first != last; ++first) ! std::cout << " 0x" << static_cast<boost::uint32_t>(*first); ! std::cout << std::endl; ! std::cout << " utf8 encoding is"; ! for (utf8_buffer_t::iterator first(utf8.begin()), last(utf8.end()); first != last; ++first) ! std::cout << " 0x" << static_cast<boost::uint32_t>(*first); ! std::cout << std::endl; ! std::cout << std::dec; ! } ! adobe::to_utf32(utf16.begin(), utf16.end(), std::back_inserter(utf16_roundtrip)); ! adobe::to_utf32(utf8.begin(), utf8.end(), std::back_inserter(utf8_roundtrip)); ! if (utf16_roundtrip[0] != code_point) ! throw std::runtime_error("In utf32 -> utf16 -> utf32: code point mismatch"); ! else if (utf8_roundtrip[0] != code_point) ! throw std::runtime_error("In utf32 -> utf8 -> utf32: code point mismatch"); ! utf8_buffer_t utf8_2; ! utf16_buffer_t utf16_2; ! adobe::to_utf8(utf16.begin(), utf16.end(), std::back_inserter(utf8_2)); ! adobe::to_utf16(utf8.begin(), utf8.end(), std::back_inserter(utf16_2)); ! utf32_buffer_t utf16_roundtrip_2; ! adobe::to_utf32(utf16_2.begin(), utf16_2.end(), std::back_inserter(utf16_roundtrip_2)); ! ! if (utf16_roundtrip_2[0] != code_point) ! throw std::runtime_error("In utf16 -> utf8 -> utf16: code point mismatch"); ! if (print) ! { ! std::cout << " code point 0x" << std::hex << code_point << std::dec << " ("; ! adobe::copy(utf8, std::ostream_iterator<char>(std::cout)); ! std::cout << ") roundtripped successfully." << std::endl; ! } } *************** *** 89,94 **** bool valid_code_point(boost::uint32_t cp) { ! return !(cp >= 0xd800 && cp <= 0xdbff) && ! !(cp >= 0xdc00 && cp <= 0xdfff); } --- 89,94 ---- bool valid_code_point(boost::uint32_t cp) { ! return !(cp >= 0xd800 && cp <= 0xdbff) && ! !(cp >= 0xdc00 && cp <= 0xdfff); } *************** *** 108,164 **** int main(int argc, char* argv[]) { ! int result(0); ! try ! { ! std::cout << "Singleton Roundtrip Tests" << std::endl; ! roundtrip_test(0x03B4); // GREEK SMALL LETTER DELTA ! roundtrip_test(0x10137); // AEGEAN WEIGHT BASE UNIT ! roundtrip_test(0xc5); // LATIN CAPITAL LETTER A WITH RING ABOVE ! roundtrip_test(0x212b); // ANGSTROM SIGN ! roundtrip_test(0xF0000); // Hypothetical private-use glyph ! if (argc > 1 && argv[1] == std::string("--full")) ! { ! std::cout << "Performing complete range roundtrip test..." << std::ends; ! boost::uint32_t first(0x0); ! boost::uint32_t last(0x10ffff); ! try ! { ! for (; first != last; ++first) ! if (valid_code_point(first)) ! roundtrip_test(first, false); ! } ! catch (...) ! { ! std::cerr << std::endl << "While processing value " << std::hex ! << first << std::dec << "..." << std::endl; ! throw; ! } ! std::cout << "passed!" << std::endl; ! } ! else ! { ! std::cout << "Complete roundtrip range test was skipped." << std::endl; ! std::cout << "Run this binary with argument --full to test conversion of all Unicode code points." << std::endl; ! } ! } ! catch (const std::exception& doh) ! { ! std::cerr << "Exception: " << doh.what() << "\n"; ! result = 1; ! } ! catch (...) ! { ! std::cerr << "Unknown Exception\n"; ! result = 1; ! } ! return result; } --- 108,164 ---- int main(int argc, char* argv[]) { ! int result(0); ! try ! { ! std::cout << "Singleton Roundtrip Tests" << std::endl; ! roundtrip_test(0x03B4); // GREEK SMALL LETTER DELTA ! roundtrip_test(0x10137); // AEGEAN WEIGHT BASE UNIT ! roundtrip_test(0xc5); // LATIN CAPITAL LETTER A WITH RING ABOVE ! roundtrip_test(0x212b); // ANGSTROM SIGN ! roundtrip_test(0xF0000); // Hypothetical private-use glyph ! if (argc > 1 && argv[1] == std::string("--full")) ! { ! std::cout << "Performing complete range roundtrip test..." << std::ends; ! boost::uint32_t first(0x0); ! boost::uint32_t last(0x10ffff); ! try ! { ! for (; first != last; ++first) ! if (valid_code_point(first)) ! roundtrip_test(first, false); ! } ! catch (...) ! { ! std::cerr << std::endl << "While processing value " << std::hex ! << first << std::dec << "..." << std::endl; ! throw; ! } ! std::cout << "passed!" << std::endl; ! } ! else ! { ! std::cout << "Complete roundtrip range test was skipped." << std::endl; ! std::cout << "Run this binary with argument --full to test conversion of all Unicode code points." << std::endl; ! } ! } ! catch (const std::exception& doh) ! { ! std::cerr << "Exception: " << doh.what() << "\n"; ! result = 1; ! } ! catch (...) ! { ! std::cerr << "Unknown Exception\n"; ! result = 1; ! } ! return result; } |
From: Foster B. <fos...@us...> - 2006-02-03 18:21:03
|
Update of /cvsroot/adobe-source/adobe-source/ide_projects/vc8/Debug In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1031/ide_projects/vc8/Debug Removed Files: editor.adm editor.eve glossary.xstr Log Message: asl 1.0.13 --- editor.eve DELETED --- --- glossary.xstr DELETED --- --- editor.adm DELETED --- |
From: Foster B. <fos...@us...> - 2006-02-03 18:21:01
|
Update of /cvsroot/adobe-source/adobe-source/adobe/test/sha In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1031/adobe/test/sha Modified Files: Jamfile.v2 main.cpp Log Message: asl 1.0.13 Index: main.cpp =================================================================== RCS file: /cvsroot/adobe-source/adobe-source/adobe/test/sha/main.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** main.cpp 6 Jan 2006 18:35:26 -0000 1.3 --- main.cpp 3 Feb 2006 18:20:49 -0000 1.4 *************** *** 1,6 **** /* ! 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) */ --- 1,6 ---- /* ! 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) */ *************** *** 21,39 **** /* ! A note about this testing ! ! A lot of this testing comes from documents on the National Institute of Standards and Technology ! (NIST) website ! - http://csrc.nist.gov/cryptval/ ! Most of the sample tests come from one of the following documents: ! - SHA Standards document: ! - http://csrc.nist.gov/publications/fips/fips180-2/fips180-2withchangenotice.pdf ! - SHA Verification Standard: ! - http://csrc.nist.gov/cryptval/shs/SHAVS.pdf ! - Wikipedia entry on SHA ! - http://en.wikipedia.org/wiki/SHA-1 ! The Pseudorandomly Generated Messages Test is described in the SHAVS document. */ --- 21,39 ---- /* ! A note about this testing ! ! A lot of this testing comes from documents on the National Institute of Standards and Technology ! (NIST) website ! - http://csrc.nist.gov/cryptval/ ! Most of the sample tests come from one of the following documents: ! - SHA Standards document: ! - http://csrc.nist.gov/publications/fips/fips180-2/fips180-2withchangenotice.pdf ! - SHA Verification Standard: ! - http://csrc.nist.gov/cryptval/shs/SHAVS.pdf ! - Wikipedia entry on SHA ! - http://en.wikipedia.org/wiki/SHA-1 ! The Pseudorandomly Generated Messages Test is described in the SHAVS document. */ *************** *** 46,76 **** struct unit_test_t { ! unit_test_t(const char* message, ! boost::uint64_t bitsize, ! const char* digest) : ! message_m(message, static_cast<std::size_t>(bitsize / 8 + ((bitsize % 8 == 0) ? 0 : 1))), bitsize_m(bitsize), digest_m(digest) ! { } ! unit_test_t(const std::string& message, ! const char* digest) : ! message_m(message), bitsize_m(std::numeric_limits<boost::uint64_t>::max()), digest_m(digest) ! { } ! unit_test_t(const unit_test_t& rhs) : ! message_m(rhs.message_m), bitsize_m(rhs.bitsize_m), digest_m(rhs.digest_m) ! { } ! unit_test_t& operator = (const unit_test_t& rhs) ! { ! message_m = rhs.message_m; ! bitsize_m = rhs.bitsize_m; ! digest_m = rhs.digest_m; ! return *this; ! } ! std::string message_m; ! boost::uint64_t bitsize_m; ! const char* digest_m; }; --- 46,76 ---- struct unit_test_t { ! unit_test_t(const char* message, ! boost::uint64_t bitsize, ! const char* digest) : ! message_m(message, static_cast<std::size_t>(bitsize / 8 + ((bitsize % 8 == 0) ? 0 : 1))), bitsize_m(bitsize), digest_m(digest) ! { } ! unit_test_t(const std::string& message, ! const char* digest) : ! message_m(message), bitsize_m(std::numeric_limits<boost::uint64_t>::max()), digest_m(digest) ! { } ! unit_test_t(const unit_test_t& rhs) : ! message_m(rhs.message_m), bitsize_m(rhs.bitsize_m), digest_m(rhs.digest_m) ! { } ! unit_test_t& operator = (const unit_test_t& rhs) ! { ! message_m = rhs.message_m; ! bitsize_m = rhs.bitsize_m; ! digest_m = rhs.digest_m; ! return *this; ! } ! std::string message_m; ! boost::uint64_t bitsize_m; ! const char* digest_m; }; *************** *** 80,100 **** std::string digest_string(const DigestType& digest, bool spaces = true) { ! std::stringstream digest_str; ! digest_str << std::hex; ! for ( typename DigestType::const_iterator first(digest.begin()), ! last(digest.end()); first != last; ++first) ! { ! digest_str.width(sizeof(typename DigestType::value_type) * 2); ! digest_str.fill('0'); ! digest_str << *first; ! if (first + 1 != last && spaces) ! digest_str << ' '; ! } ! return digest_str.str(); } --- 80,100 ---- std::string digest_string(const DigestType& digest, bool spaces = true) { ! std::stringstream digest_str; ! digest_str << std::hex; ! for ( typename DigestType::const_iterator first(digest.begin()), ! last(digest.end()); first != last; ++first) ! { ! digest_str.width(sizeof(typename DigestType::value_type) * 2); ! digest_str.fill('0'); ! digest_str << *first; ! if (first + 1 != last && spaces) ! digest_str << ' '; ! } ! return digest_str.str(); } *************** *** 104,127 **** std::string digest_binary(const DigestType& digest) { ! enum { num_bytes = sizeof(typename DigestType::value_type) }; ! std::string digest_str; ! digest_str.reserve(digest.size() * num_bytes + 1); ! for ( typename DigestType::const_iterator first(digest.begin()), ! last(digest.end()); first != last; ++first) ! { ! typename DigestType::value_type cur(*first); ! for (int i(num_bytes - 1); i >= 0; --i) ! { ! std::size_t shift_amt(8 * i); ! digest_str += char((cur >> shift_amt) & 0xff); ! } ! } ! return digest_str; } --- 104,127 ---- std::string digest_binary(const DigestType& digest) { ! enum { num_bytes = sizeof(typename DigestType::value_type) }; ! std::string digest_str; ! digest_str.reserve(digest.size() * num_bytes + 1); ! for ( typename DigestType::const_iterator first(digest.begin()), ! last(digest.end()); first != last; ++first) ! { ! typename DigestType::value_type cur(*first); ! for (int i(num_bytes - 1); i >= 0; --i) ! { ! std::size_t shift_amt(8 * i); ! digest_str += char((cur >> shift_amt) & 0xff); ! } ! } ! return digest_str; } *************** *** 130,155 **** void print_binary_message(const std::string& str, std::size_t unit_size) { ! std::cout << std::hex; ! std::size_t count(0); ! for ( std::string::const_iterator first(str.begin()), ! last(str.end()); first != last; ++first) ! { ! int value(int(*first) & 0xff); ! std::cout.width(2); ! std::cout.fill('0'); ! std::cout << value; ! if (++count == unit_size) ! { ! std::cout << ' '; ! count = 0; ! } ! } ! std::cout << std::dec; } --- 130,155 ---- void print_binary_message(const std::string& str, std::size_t unit_size) { ! std::cout << std::hex; ! std::size_t count(0); ! for ( std::string::const_iterator first(str.begin()), ! last(str.end()); first != last; ++first) ! { ! int value(int(*first) & 0xff); ! std::cout.width(2); ! std::cout.fill('0'); ! std::cout << value; ! if (++count == unit_size) ! { ! std::cout << ' '; ! count = 0; ! } ! } ! std::cout << std::dec; } *************** *** 184,221 **** void pgmt(std::string seed) { ! // Pseudorandomly Generated Messages Test ! // REVISIT (fbrereto) : Automate verification of output ! typedef HashT hash_type; ! typedef typename hash_type::digest_type digest_type; ! std::cout << "*** pseudorandomly generated messages test for " << typeid(hash_type).name() << std::endl; ! std::string md[1003]; ! hash_type hash; ! for (std::size_t j(0); j < 4; ++j) ! { ! md[0] = seed; ! md[1] = seed; ! md[2] = seed; ! std::string m[1003]; ! for (std::size_t i(3); i < 1003; ++i) ! { ! m[i] = md[i - 3] + md[i - 2] + md[i - 1]; ! md[i] = digest_binary(hash.digest(m[i].begin(), m[i].end())); ! } ! seed = md[1002]; ! md[j] = seed; ! std::cout << "\tMD[" << static_cast<unsigned int>(j) << "]: "; ! print_binary_message(md[j], sizeof(typename digest_type::value_type)); ! std::cout << std::endl; ! } } --- 184,221 ---- void pgmt(std::string seed) { ! // Pseudorandomly Generated Messages Test ! // REVISIT (fbrereto) : Automate verification of output ! typedef HashT hash_type; ! typedef typename hash_type::digest_type digest_type; ! std::cout << "*** pseudorandomly generated messages test for " << typeid(hash_type).name() << std::endl; ! std::string md[1003]; ! hash_type hash; ! for (std::size_t j(0); j < 4; ++j) ! { ! md[0] = seed; ! md[1] = seed; ! md[2] = seed; ! std::string m[1003]; ! for (std::size_t i(3); i < 1003; ++i) ! { ! m[i] = md[i - 3] + md[i - 2] + md[i - 1]; ! md[i] = digest_binary(hash.digest(m[i].begin(), m[i].end())); ! } ! seed = md[1002]; ! md[j] = seed; ! std::cout << "\tMD[" << static_cast<unsigned int>(j) << "]: "; ! print_binary_message(md[j], sizeof(typename digest_type::value_type)); ! std::cout << std::endl; ! } } *************** *** 225,280 **** bool test_hash(I first, I last) { ! typedef HashT hash_type; ! typedef typename hash_type::digest_type digest_type; ! hash_type hash; ! std::size_t test_count(0); ! std::cout << "*** " << typeid(hash).name() << " unit testing" << std::endl; ! while (first != last) ! { ! const unit_test_t& cur_test(*first); ! const std::string& test_string(cur_test.message_m); ! std::string::const_iterator test_string_first(test_string.begin()); ! std::string::const_iterator test_string_last(test_string.end()); ! bool modified_bitsize(cur_test.bitsize_m != std::numeric_limits<boost::uint64_t>::max()); ! adobe::timer_t timer; ! digest_type hash_digest((modified_bitsize) ? ! hash.digest(test_string_first, cur_test.bitsize_m) : ! hash.digest(test_string_first, test_string_last)); ! double time(timer.split()); ! std::string digest(digest_string(hash_digest)); ! bool test_passed(digest == cur_test.digest_m); ! if (test_passed) ! { ! std::cout << "\ttest " << static_cast<unsigned int>(++test_count) << " passed in " ! << time << " miliseconds (" << (time / 1e3) ! << " seconds)" << std::endl; ! } ! else ! { ! std::cout << "test " << static_cast<unsigned int>(++test_count) << ":" << std::endl ! << "\tmessage length: " << static_cast<unsigned int>(test_string.size()) << " bytes (" ! << static_cast<unsigned int>(modified_bitsize ? cur_test.bitsize_m : test_string.size() * 8) ! << " bits)" << std::endl ! << "\tdigest: " << digest << std::endl ! << "\tknown good: " << cur_test.digest_m << std::endl ! << "\tsame?: " << (test_passed ? "Yes" : "NO") << std::endl ! << "\ttime to digest: " << time << " miliseconds (" << (time / 1e3) << " seconds)" ! << std::endl; ! return false; ! } ! ++first; ! } ! // Perform the Pseudorandomly Generated Messages Test ! pgmt<HashT>(pgmt_seed<HashT>()); ! return true; } --- 225,280 ---- bool test_hash(I first, I last) { ! typedef HashT hash_type; ! typedef typename hash_type::digest_type digest_type; ! hash_type hash; ! std::size_t test_count(0); ! std::cout << "*** " << typeid(hash).name() << " unit testing" << std::endl; ! while (first != last) ! { ! const unit_test_t& cur_test(*first); ! const std::string& test_string(cur_test.message_m); ! std::string::const_iterator test_string_first(test_string.begin()); ! std::string::const_iterator test_string_last(test_string.end()); ! bool modified_bitsize(cur_test.bitsize_m != std::numeric_limits<boost::uint64_t>::max()); ! adobe::timer_t timer; ! digest_type hash_digest((modified_bitsize) ? ! hash.digest(test_string_first, cur_test.bitsize_m) : ! hash.digest(test_string_first, test_string_last)); ! double time(timer.split()); ! std::string digest(digest_string(hash_digest)); ! bool test_passed(digest == cur_test.digest_m); ! if (test_passed) ! { ! std::cout << "\ttest " << static_cast<unsigned int>(++test_count) << " passed in " ! << time << " miliseconds (" << (time / 1e3) ! << " seconds)" << std::endl; ! } ! else ! { ! std::cout << "test " << static_cast<unsigned int>(++test_count) << ":" << std::endl ! << "\tmessage length: " << static_cast<unsigned int>(test_string.size()) << " bytes (" ! << static_cast<unsigned int>(modified_bitsize ? cur_test.bitsize_m : test_string.size() * 8) ! << " bits)" << std::endl ! << "\tdigest: " << digest << std::endl ! << "\tknown good: " << cur_test.digest_m << std::endl ! << "\tsame?: " << (test_passed ? "Yes" : "NO") << std::endl ! << "\ttime to digest: " << time << " miliseconds (" << (time / 1e3) << " seconds)" ! << std::endl; ! return false; ! } ! ++first; ! } ! // Perform the Pseudorandomly Generated Messages Test ! pgmt<HashT>(pgmt_seed<HashT>()); ! return true; } *************** *** 287,419 **** int main(int argc, char** argv) { ! std::cout << "Compiled " << __DATE__ << " " << __TIME__ << std::endl; ! /************************** SHA-1 Unit Tests **************************/ ! std::vector<unit_test_t> sha1_test_set; ! sha1_test_set.push_back(unit_test_t("abc", ! "a9993e36 4706816a ba3e2571 7850c26c 9cd0d89d")); ! sha1_test_set.push_back(unit_test_t("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", ! "84983e44 1c3bd26e baae4aa1 f95129e5 e54670f1")); #if ADOBE_TEST_SHA_MILLION_A_STRING ! sha1_test_set.push_back(unit_test_t(std::string(1000000, 'a'), ! "34aa973c d4c4daa4 f61eeb2b dbad2731 6534016f")); #endif ! sha1_test_set.push_back(unit_test_t("The quick brown fox jumps over the lazy dog", ! "2fd4e1c6 7a2d28fc ed849ee1 bb76e739 1b93eb12")); ! sha1_test_set.push_back(unit_test_t("The quick brown fox jumps over the lazy cog", ! "de9f2c7f d25e1b3a fad3e85a 0bd17d9b 100db4b3")); ! sha1_test_set.push_back(unit_test_t("", ! "da39a3ee 5e6b4b0d 3255bfef 95601890 afd80709")); ! sha1_test_set.push_back(unit_test_t("\x98", 5, ! "29826b00 3b906e66 0eff4027 ce98af35 31ac75ba")); ! sha1_test_set.push_back(unit_test_t("\x49\xb2\xae\xc2\x59\x4b\xbe\x3a\x3b\x11\x75\x42\xd9\x4a\xc8\x80", 123, ! "6239781e 03729919 c01955b3 ffa8acb6 0b988340")); ! sha1_test_set.push_back(unit_test_t("\x65\xf9\x32\x99\x5b\xa4\xce\x2c\xb1\xb4\xa2\xe7\x1a\xe7\x02\x20\xaa\xce\xc8\x96\x2d\xd4\x49\x9c\xbd\x7c\x88\x7a\x94\xea\xaa\x10\x1e\xa5\xaa\xbc\x52\x9b\x4e\x7e\x43\x66\x5a\x5a\xf2\xcd\x03\xfe\x67\x8e\xa6\xa5\x00\x5b\xba\x3b\x08\x22\x04\xc2\x8b\x91\x09\xf4\x69\xda\xc9\x2a\xaa\xb3\xaa\x7c\x11\xa1\xb3\x2a\xe0", 611, ! "8c5b2a5d dae5a97f c7f9d856 61c672ad bf7933d4")); ! if (!test_hash<adobe::sha1_t>(sha1_test_set.begin(), sha1_test_set.end())) ! return 1; ! /************************** SHA-224 Unit Tests **************************/ ! std::vector<unit_test_t> sha224_test_set; ! sha224_test_set.push_back(unit_test_t("abc", ! "23097d22 3405d822 8642a477 bda255b3 2aadbce4 bda0b3f7 e36c9da7")); ! sha224_test_set.push_back(unit_test_t("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", ! "75388b16 512776cc 5dba5da1 fd890150 b0c6455c b4f58b19 52522525")); #if ADOBE_TEST_SHA_MILLION_A_STRING ! sha224_test_set.push_back(unit_test_t(std::string(1000000, 'a'), ! "20794655 980c91d8 bbb4c1ea 97618a4b f03f4258 1948b2ee 4ee7ad67")); #endif ! sha224_test_set.push_back(unit_test_t("\x68", 5, ! "e3b04855 2c3c387b cab37f6e b06bb79b 96a4aee5 ff27f515 31a9551c")); ! sha224_test_set.push_back(unit_test_t("\xf0\x70\x06\xf2\x5a\x0b\xea\x68\xcd\x76\xa2\x95\x87\xc2\x8d\xa0", 123, ! "1b01db6c b4a9e43d ed1516be b3db0b87 b6d1ea43 187462c6 08137150")); ! sha224_test_set.push_back(unit_test_t("\xa2\xbe\x6e\x46\x32\x81\x09\x02\x94\xd9\xce\x94\x82\x65\x69\x42\x3a\x3a\x30\x5e\xd5\xe2\x11\x6c\xd4\xa4\xc9\x87\xfc\x06\x57\x00\x64\x91\xb1\x49\xcc\xd4\xb5\x11\x30\xac\x62\xb1\x9d\xc2\x48\xc7\x44\x54\x3d\x20\xcd\x39\x52\xdc\xed\x1f\x06\xcc\x3b\x18\xb9\x1f\x3f\x55\x63\x3e\xcc\x30\x85\xf4\x90\x70\x60\xd2\xe0", 611, ! "54bea6ea b8195a2e b0a7906a 4b4a8766 66300eef bd1f3b84 74f9cd57")); ! if (!test_hash<adobe::sha224_t>(sha224_test_set.begin(), sha224_test_set.end())) ! return 1; ! /************************** SHA-256 Unit Tests **************************/ ! std::vector<unit_test_t> sha256_test_set; ! sha256_test_set.push_back(unit_test_t("abc", ! "ba7816bf 8f01cfea 414140de 5dae2223 b00361a3 96177a9c b410ff61 f20015ad")); ! sha256_test_set.push_back(unit_test_t("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", ! "248d6a61 d20638b8 e5c02693 0c3e6039 a33ce459 64ff2167 f6ecedd4 19db06c1")); #if ADOBE_TEST_SHA_MILLION_A_STRING ! sha256_test_set.push_back(unit_test_t(std::string(1000000, 'a'), ! "cdc76e5c 9914fb92 81a1c7e2 84d73e67 f1809a48 a497200e 046d39cc c7112cd0")); #endif ! sha256_test_set.push_back(unit_test_t("\x68", 5, ! "d6d3e02a 31a84a8c aa9718ed 6c2057be 09db45e7 823eb507 9ce7a573 a3760f95")); ! sha256_test_set.push_back(unit_test_t("\xbe\x27\x46\xc6\xdb\x52\x76\x5f\xdb\x2f\x88\x70\x0f\x9a\x73\x60", 123, ! "77ec1dc8 9c821ff2 a1279089 fa091b35 b8cd960b caf7de01 c6a76807 56beb972")); ! sha256_test_set.push_back(unit_test_t("\x3e\x74\x03\x71\xc8\x10\xc2\xb9\x9f\xc0\x4e\x80\x49\x07\xef\x7c\xf2\x6b\xe2\x8b\x57\xcb\x58\xa3\xe2\xf3\xc0\x07\x16\x6e\x49\xc1\x2e\x9b\xa3\x4c\x01\x04\x06\x91\x29\xea\x76\x15\x64\x25\x45\x70\x3a\x2b\xd9\x01\xe1\x6e\xb0\xe0\x5d\xeb\xa0\x14\xeb\xff\x64\x06\xa0\x7d\x54\x36\x4e\xff\x74\x2d\xa7\x79\xb0\xb3\xa0", 611, ! "3e9ad646 8bbbad2a c3c2cdc2 92e018ba 5fd70b96 0cf16797 77fce708 fdb066e9")); ! if (!test_hash<adobe::sha256_t>(sha256_test_set.begin(), sha256_test_set.end())) ! return 1; ! /************************** SHA-384 Unit Tests **************************/ ! std::vector<unit_test_t> sha384_test_set; ! sha384_test_set.push_back(unit_test_t("abc", ! "cb00753f45a35e8b b5a03d699ac65007 272c32ab0eded163 1a8b605a43ff5bed 8086072ba1e7cc23 58baeca134c825a7")); ! sha384_test_set.push_back(unit_test_t("abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu", ! "09330c33f71147e8 3d192fc782cd1b47 53111b173b3b05d2 2fa08086e3b0f712 fcc7c71a557e2db9 66c3e9fa91746039")); #if ADOBE_TEST_SHA_MILLION_A_STRING ! sha384_test_set.push_back(unit_test_t(std::string(1000000, 'a'), ! "9d0e1809716474cb 086e834e310a4a1c ed149e9c00f24852 7972cec5704c2a5b 07b8b3dc38ecc4eb ae97ddd87f3d8985")); #endif ! sha384_test_set.push_back(unit_test_t("\x10", 5, ! "8d17be79e32b6718 e07d8a603eb84ba0 478f7fcfd1bb9399 5f7d1149e09143ac 1ffcfc56820e469f 3878d957a15a3fe4")); ! sha384_test_set.push_back(unit_test_t("\x8b\xc5\x00\xc7\x7c\xee\xd9\x87\x9d\xa9\x89\x10\x7c\xe0\xaa\xa0", 123, ! "d8c43b38e12e7c42 a7c9b810299fd6a7 70bef30920f17532 a898de62c7a07e42 93449c0b5fa70109 f0783211cfc4bce3")); ! sha384_test_set.push_back(unit_test_t("\x68\xf5\x01\x79\x2d\xea\x97\x96\x76\x70\x22\xd9\x3d\xa7\x16\x79\x30\x99\x20\xfa\x10\x12\xae\xa3\x57\xb2\xb1\x33\x1d\x40\xa1\xd0\x3c\x41\xc2\x40\xb3\xc9\xa7\x5b\x48\x92\xf4\xc0\x72\x4b\x68\xc8\x75\x32\x1a\xb8\xcf\xe5\x02\x3b\xd3\x75\xbc\x0f\x94\xbd\x89\xfe\x04\xf2\x97\x10\x5d\x7b\x82\xff\xc0\x02\x1a\xeb\x1c\xcb\x67\x4f\x52\x44\xea\x34\x97\xde\x26\xa4\x19\x1c\x5f\x62\xe5\xe9\xa2\xd8\x08\x2f\x05\x51\xf4\xa5\x30\x68\x26\xe9\x1c\xc0\x06\xce\x1b\xf6\x0f\xf7\x19\xd4\x2f\xa5\x21\xc8\x71\xcd\x23\x94\xd9\x6e\xf4\x46\x8f\x21\x96\x6b\x41\xf2\xba\x80\xc2\x6e\x83\xa9\xe0", 1123, ! "5860e8de91c21578 bb4174d227898a98 e0b45c4c760f0095 49495614daedc077 5d92d11d9f8ce9b0 64eeac8dafc3a297")); ! if (!test_hash<adobe::sha384_t>(sha384_test_set.begin(), sha384_test_set.end())) ! return 1; ! /************************** SHA-512 Unit Tests **************************/ ! std::vector<unit_test_t> sha512_test_set; ! sha512_test_set.push_back(unit_test_t("abc", ! "ddaf35a193617aba cc417349ae204131 12e6fa4e89a97ea2 0a9eeee64b55d39a 2192992a274fc1a8 36ba3c23a3feebbd 454d4423643ce80e 2a9ac94fa54ca49f")); ! sha512_test_set.push_back(unit_test_t("abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu", ! "8e959b75dae313da 8cf4f72814fc143f 8f7779c6eb9f7fa1 7299aeadb6889018 501d289e4900f7e4 331b99dec4b5433a c7d329eeb6dd2654 5e96e55b874be909")); #if ADOBE_TEST_SHA_MILLION_A_STRING ! sha512_test_set.push_back(unit_test_t(std::string(1000000, 'a'), ! "e718483d0ce76964 4e2e42c7bc15b463 8e1f98b13b204428 5632a803afa973eb de0ff244877ea60a 4cb0432ce577c31b eb009c5c2c49aa2e 4eadb217ad8cc09b")); #endif ! sha512_test_set.push_back(unit_test_t("\xb0", 5, ! "d4ee29a9e9098544 6b913cf1d1376c83 6f4be2c1cf3cada0 720a6bf4857d886a 7ecb3c4e4c0fa8c7 f95214e41dc1b0d2 1b22a84cc03bf8ce 4845f34dd5bdbad4")); ! sha512_test_set.push_back(unit_test_t("\x08\xec\xb5\x2e\xba\xe1\xf7\x42\x2d\xb6\x2b\xcd\x54\x26\x70\x80", 123, ! "ed8dc78e8b01b697 50053dbb7a0a9eda 0fb9e9d292b1ed71 5e80a7fe290a4e16 664fd913e8585440 0c5af05e6dad316b 7359b43e64f8bec3 c1f237119986bbb6")); ! sha512_test_set.push_back(unit_test_t("\x3a\xdd\xec\x85\x59\x32\x16\xd1\x61\x9a\xa0\x2d\x97\x56\x97\x0b\xfc\x70\xac\xe2\x74\x4f\x7c\x6b\x27\x88\x15\x10\x28\xf7\xb6\xa2\x55\x0f\xd7\x4a\x7e\x6e\x69\xc2\xc9\xb4\x5f\xc4\x54\x96\x6d\xc3\x1d\x2e\x10\xda\x1f\x95\xce\x02\xbe\xb4\xbf\x87\x65\x57\x4c\xbd\x6e\x83\x37\xef\x42\x0a\xdc\x98\xc1\x5c\xb6\xd5\xe4\xa0\x24\x1b\xa0\x04\x6d\x25\x0e\x51\x02\x31\xca\xc2\x04\x6c\x99\x16\x06\xab\x4e\xe4\x14\x5b\xee\x2f\xf4\xbb\x12\x3a\xab\x49\x8d\x9d\x44\x79\x4f\x99\xcc\xad\x89\xa9\xa1\x62\x12\x59\xed\xa7\x0a\x5b\x6d\xd4\xbd\xd8\x77\x78\xc9\x04\x3b\x93\x84\xf5\x49\x06\x80", 1123, ! "32ba76fc30eaa020 8aeb50ffb5af1864 fdbf17902a4dc0a6 82c61fcea6d92b78 3267b21080301837 f59de79c6b337db2 526f8a0a510e5e53 cafed4355fe7c2f1")); ! if (!test_hash<adobe::sha512_t>(sha512_test_set.begin(), sha512_test_set.end())) ! return 1; ! return 0; } --- 287,419 ---- int main(int argc, char** argv) { ! std::cout << "Compiled " << __DATE__ << " " << __TIME__ << std::endl; ! /************************** SHA-1 Unit Tests **************************/ ! std::vector<unit_test_t> sha1_test_set; ! sha1_test_set.push_back(unit_test_t("abc", ! "a9993e36 4706816a ba3e2571 7850c26c 9cd0d89d")); ! sha1_test_set.push_back(unit_test_t("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", ! "84983e44 1c3bd26e baae4aa1 f95129e5 e54670f1")); #if ADOBE_TEST_SHA_MILLION_A_STRING ! sha1_test_set.push_back(unit_test_t(std::string(1000000, 'a'), ! "34aa973c d4c4daa4 f61eeb2b dbad2731 6534016f")); #endif ! sha1_test_set.push_back(unit_test_t("The quick brown fox jumps over the lazy dog", ! "2fd4e1c6 7a2d28fc ed849ee1 bb76e739 1b93eb12")); ! sha1_test_set.push_back(unit_test_t("The quick brown fox jumps over the lazy cog", ! "de9f2c7f d25e1b3a fad3e85a 0bd17d9b 100db4b3")); ! sha1_test_set.push_back(unit_test_t("", ! "da39a3ee 5e6b4b0d 3255bfef 95601890 afd80709")); ! sha1_test_set.push_back(unit_test_t("\x98", 5, ! "29826b00 3b906e66 0eff4027 ce98af35 31ac75ba")); ! sha1_test_set.push_back(unit_test_t("\x49\xb2\xae\xc2\x59\x4b\xbe\x3a\x3b\x11\x75\x42\xd9\x4a\xc8\x80", 123, ! "6239781e 03729919 c01955b3 ffa8acb6 0b988340")); ! sha1_test_set.push_back(unit_test_t("\x65\xf9\x32\x99\x5b\xa4\xce\x2c\xb1\xb4\xa2\xe7\x1a\xe7\x02\x20\xaa\xce\xc8\x96\x2d\xd4\x49\x9c\xbd\x7c\x88\x7a\x94\xea\xaa\x10\x1e\xa5\xaa\xbc\x52\x9b\x4e\x7e\x43\x66\x5a\x5a\xf2\xcd\x03\xfe\x67\x8e\xa6\xa5\x00\x5b\xba\x3b\x08\x22\x04\xc2\x8b\x91\x09\xf4\x69\xda\xc9\x2a\xaa\xb3\xaa\x7c\x11\xa1\xb3\x2a\xe0", 611, ! "8c5b2a5d dae5a97f c7f9d856 61c672ad bf7933d4")); ! if (!test_hash<adobe::sha1_t>(sha1_test_set.begin(), sha1_test_set.end())) ! return 1; ! /************************** SHA-224 Unit Tests **************************/ ! std::vector<unit_test_t> sha224_test_set; ! sha224_test_set.push_back(unit_test_t("abc", ! "23097d22 3405d822 8642a477 bda255b3 2aadbce4 bda0b3f7 e36c9da7")); ! sha224_test_set.push_back(unit_test_t("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", ! "75388b16 512776cc 5dba5da1 fd890150 b0c6455c b4f58b19 52522525")); #if ADOBE_TEST_SHA_MILLION_A_STRING ! sha224_test_set.push_back(unit_test_t(std::string(1000000, 'a'), ! "20794655 980c91d8 bbb4c1ea 97618a4b f03f4258 1948b2ee 4ee7ad67")); #endif ! sha224_test_set.push_back(unit_test_t("\x68", 5, ! "e3b04855 2c3c387b cab37f6e b06bb79b 96a4aee5 ff27f515 31a9551c")); ! sha224_test_set.push_back(unit_test_t("\xf0\x70\x06\xf2\x5a\x0b\xea\x68\xcd\x76\xa2\x95\x87\xc2\x8d\xa0", 123, ! "1b01db6c b4a9e43d ed1516be b3db0b87 b6d1ea43 187462c6 08137150")); ! sha224_test_set.push_back(unit_test_t("\xa2\xbe\x6e\x46\x32\x81\x09\x02\x94\xd9\xce\x94\x82\x65\x69\x42\x3a\x3a\x30\x5e\xd5\xe2\x11\x6c\xd4\xa4\xc9\x87\xfc\x06\x57\x00\x64\x91\xb1\x49\xcc\xd4\xb5\x11\x30\xac\x62\xb1\x9d\xc2\x48\xc7\x44\x54\x3d\x20\xcd\x39\x52\xdc\xed\x1f\x06\xcc\x3b\x18\xb9\x1f\x3f\x55\x63\x3e\xcc\x30\x85\xf4\x90\x70\x60\xd2\xe0", 611, ! "54bea6ea b8195a2e b0a7906a 4b4a8766 66300eef bd1f3b84 74f9cd57")); ! if (!test_hash<adobe::sha224_t>(sha224_test_set.begin(), sha224_test_set.end())) ! return 1; ! /************************** SHA-256 Unit Tests **************************/ ! std::vector<unit_test_t> sha256_test_set; ! sha256_test_set.push_back(unit_test_t("abc", ! "ba7816bf 8f01cfea 414140de 5dae2223 b00361a3 96177a9c b410ff61 f20015ad")); ! sha256_test_set.push_back(unit_test_t("abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", ! "248d6a61 d20638b8 e5c02693 0c3e6039 a33ce459 64ff2167 f6ecedd4 19db06c1")); #if ADOBE_TEST_SHA_MILLION_A_STRING ! sha256_test_set.push_back(unit_test_t(std::string(1000000, 'a'), ! "cdc76e5c 9914fb92 81a1c7e2 84d73e67 f1809a48 a497200e 046d39cc c7112cd0")); #endif ! sha256_test_set.push_back(unit_test_t("\x68", 5, ! "d6d3e02a 31a84a8c aa9718ed 6c2057be 09db45e7 823eb507 9ce7a573 a3760f95")); ! sha256_test_set.push_back(unit_test_t("\xbe\x27\x46\xc6\xdb\x52\x76\x5f\xdb\x2f\x88\x70\x0f\x9a\x73\x60", 123, ! "77ec1dc8 9c821ff2 a1279089 fa091b35 b8cd960b caf7de01 c6a76807 56beb972")); ! sha256_test_set.push_back(unit_test_t("\x3e\x74\x03\x71\xc8\x10\xc2\xb9\x9f\xc0\x4e\x80\x49\x07\xef\x7c\xf2\x6b\xe2\x8b\x57\xcb\x58\xa3\xe2\xf3\xc0\x07\x16\x6e\x49\xc1\x2e\x9b\xa3\x4c\x01\x04\x06\x91\x29\xea\x76\x15\x64\x25\x45\x70\x3a\x2b\xd9\x01\xe1\x6e\xb0\xe0\x5d\xeb\xa0\x14\xeb\xff\x64\x06\xa0\x7d\x54\x36\x4e\xff\x74\x2d\xa7\x79\xb0\xb3\xa0", 611, ! "3e9ad646 8bbbad2a c3c2cdc2 92e018ba 5fd70b96 0cf16797 77fce708 fdb066e9")); ! if (!test_hash<adobe::sha256_t>(sha256_test_set.begin(), sha256_test_set.end())) ! return 1; ! /************************** SHA-384 Unit Tests **************************/ ! std::vector<unit_test_t> sha384_test_set; ! sha384_test_set.push_back(unit_test_t("abc", ! "cb00753f45a35e8b b5a03d699ac65007 272c32ab0eded163 1a8b605a43ff5bed 8086072ba1e7cc23 58baeca134c825a7")); ! sha384_test_set.push_back(unit_test_t("abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu", ! "09330c33f71147e8 3d192fc782cd1b47 53111b173b3b05d2 2fa08086e3b0f712 fcc7c71a557e2db9 66c3e9fa91746039")); #if ADOBE_TEST_SHA_MILLION_A_STRING ! sha384_test_set.push_back(unit_test_t(std::string(1000000, 'a'), ! "9d0e1809716474cb 086e834e310a4a1c ed149e9c00f24852 7972cec5704c2a5b 07b8b3dc38ecc4eb ae97ddd87f3d8985")); #endif ! sha384_test_set.push_back(unit_test_t("\x10", 5, ! "8d17be79e32b6718 e07d8a603eb84ba0 478f7fcfd1bb9399 5f7d1149e09143ac 1ffcfc56820e469f 3878d957a15a3fe4")); ! sha384_test_set.push_back(unit_test_t("\x8b\xc5\x00\xc7\x7c\xee\xd9\x87\x9d\xa9\x89\x10\x7c\xe0\xaa\xa0", 123, ! "d8c43b38e12e7c42 a7c9b810299fd6a7 70bef30920f17532 a898de62c7a07e42 93449c0b5fa70109 f0783211cfc4bce3")); ! sha384_test_set.push_back(unit_test_t("\x68\xf5\x01\x79\x2d\xea\x97\x96\x76\x70\x22\xd9\x3d\xa7\x16\x79\x30\x99\x20\xfa\x10\x12\xae\xa3\x57\xb2\xb1\x33\x1d\x40\xa1\xd0\x3c\x41\xc2\x40\xb3\xc9\xa7\x5b\x48\x92\xf4\xc0\x72\x4b\x68\xc8\x75\x32\x1a\xb8\xcf\xe5\x02\x3b\xd3\x75\xbc\x0f\x94\xbd\x89\xfe\x04\xf2\x97\x10\x5d\x7b\x82\xff\xc0\x02\x1a\xeb\x1c\xcb\x67\x4f\x52\x44\xea\x34\x97\xde\x26\xa4\x19\x1c\x5f\x62\xe5\xe9\xa2\xd8\x08\x2f\x05\x51\xf4\xa5\x30\x68\x26\xe9\x1c\xc0\x06\xce\x1b\xf6\x0f\xf7\x19\xd4\x2f\xa5\x21\xc8\x71\xcd\x23\x94\xd9\x6e\xf4\x46\x8f\x21\x96\x6b\x41\xf2\xba\x80\xc2\x6e\x83\xa9\xe0", 1123, ! "5860e8de91c21578 bb4174d227898a98 e0b45c4c760f0095 49495614daedc077 5d92d11d9f8ce9b0 64eeac8dafc3a297")); ! if (!test_hash<adobe::sha384_t>(sha384_test_set.begin(), sha384_test_set.end())) ! return 1; ! /************************** SHA-512 Unit Tests **************************/ ! std::vector<unit_test_t> sha512_test_set; ! sha512_test_set.push_back(unit_test_t("abc", ! "ddaf35a193617aba cc417349ae204131 12e6fa4e89a97ea2 0a9eeee64b55d39a 2192992a274fc1a8 36ba3c23a3feebbd 454d4423643ce80e 2a9ac94fa54ca49f")); ! sha512_test_set.push_back(unit_test_t("abcdefghbcdefghicdefghijdefghijkefghijklfghijklmghijklmnhijklmnoijklmnopjklmnopqklmnopqrlmnopqrsmnopqrstnopqrstu", ! "8e959b75dae313da 8cf4f72814fc143f 8f7779c6eb9f7fa1 7299aeadb6889018 501d289e4900f7e4 331b99dec4b5433a c7d329eeb6dd2654 5e96e55b874be909")); #if ADOBE_TEST_SHA_MILLION_A_STRING ! sha512_test_set.push_back(unit_test_t(std::string(1000000, 'a'), ! "e718483d0ce76964 4e2e42c7bc15b463 8e1f98b13b204428 5632a803afa973eb de0ff244877ea60a 4cb0432ce577c31b eb009c5c2c49aa2e 4eadb217ad8cc09b")); #endif ! sha512_test_set.push_back(unit_test_t("\xb0", 5, ! "d4ee29a9e9098544 6b913cf1d1376c83 6f4be2c1cf3cada0 720a6bf4857d886a 7ecb3c4e4c0fa8c7 f95214e41dc1b0d2 1b22a84cc03bf8ce 4845f34dd5bdbad4")); ! sha512_test_set.push_back(unit_test_t("\x08\xec\xb5\x2e\xba\xe1\xf7\x42\x2d\xb6\x2b\xcd\x54\x26\x70\x80", 123, ! "ed8dc78e8b01b697 50053dbb7a0a9eda 0fb9e9d292b1ed71 5e80a7fe290a4e16 664fd913e8585440 0c5af05e6dad316b 7359b43e64f8bec3 c1f237119986bbb6")); ! sha512_test_set.push_back(unit_test_t("\x3a\xdd\xec\x85\x59\x32\x16\xd1\x61\x9a\xa0\x2d\x97\x56\x97\x0b\xfc\x70\xac\xe2\x74\x4f\x7c\x6b\x27\x88\x15\x10\x28\xf7\xb6\xa2\x55\x0f\xd7\x4a\x7e\x6e\x69\xc2\xc9\xb4\x5f\xc4\x54\x96\x6d\xc3\x1d\x2e\x10\xda\x1f\x95\xce\x02\xbe\xb4\xbf\x87\x65\x57\x4c\xbd\x6e\x83\x37\xef\x42\x0a\xdc\x98\xc1\x5c\xb6\xd5\xe4\xa0\x24\x1b\xa0\x04\x6d\x25\x0e\x51\x02\x31\xca\xc2\x04\x6c\x99\x16\x06\xab\x4e\xe4\x14\x5b\xee\x2f\xf4\xbb\x12\x3a\xab\x49\x8d\x9d\x44\x79\x4f\x99\xcc\xad\x89\xa9\xa1\x62\x12\x59\xed\xa7\x0a\x5b\x6d\xd4\xbd\xd8\x77\x78\xc9\x04\x3b\x93\x84\xf5\x49\x06\x80", 1123, ! "32ba76fc30eaa020 8aeb50ffb5af1864 fdbf17902a4dc0a6 82c61fcea6d92b78 3267b21080301837 f59de79c6b337db2 526f8a0a510e5e53 cafed4355fe7c2f1")); ! if (!test_hash<adobe::sha512_t>(sha512_test_set.begin(), sha512_test_set.end())) ! return 1; ! return 0; } Index: Jamfile.v2 =================================================================== RCS file: /cvsroot/adobe-source/adobe-source/adobe/test/sha/Jamfile.v2,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** Jamfile.v2 6 Jan 2006 18:35:26 -0000 1.2 --- Jamfile.v2 3 Feb 2006 18:20:49 -0000 1.3 *************** *** 2,6 **** project adobe/sha ! ; run main.cpp --- 2,6 ---- project adobe/sha ! ; run main.cpp *************** *** 8,10 **** : #files : <toolset>darwin:<linkflags>"-framework Carbon" ! ; --- 8,10 ---- : #files : <toolset>darwin:<linkflags>"-framework Carbon" ! ; |
From: Foster B. <fos...@us...> - 2006-02-03 18:21:01
|
Update of /cvsroot/adobe-source/adobe-source/adobe/test/md5 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1031/adobe/test/md5 Modified Files: check_md5.cpp main.cpp md5_smoke.sh Log Message: asl 1.0.13 Index: md5_smoke.sh =================================================================== RCS file: /cvsroot/adobe-source/adobe-source/adobe/test/md5/md5_smoke.sh,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** md5_smoke.sh 3 Jun 2005 16:35:46 -0000 1.1 --- md5_smoke.sh 3 Feb 2006 18:20:48 -0000 1.2 *************** *** 2,11 **** if [ "$1" == "" ]; then ! echo "usage: $0 [ file ]" ! echo " compares the ASL MD5 hash function with OpenSSL MD5." ! echo " Note: you must have the md5_asl binaries compiled" ! echo " before you can use this smoke test." ! exit 1; fi --- 2,11 ---- if [ "$1" == "" ]; then ! echo "usage: $0 [ file ]" ! echo " compares the ASL MD5 hash function with OpenSSL MD5." ! echo " Note: you must have the md5_asl binaries compiled" ! echo " before you can use this smoke test." ! exit 1; fi *************** *** 16,41 **** for TEST_EXE in "./bindebug/md5_asl" "./bin/md5_asl" ; do ! if [ -x $TEST_EXE ]; then ! TEST_RESULT=`$TEST_EXE $1` ! ! if [ "$OPENSSL_RESULT" == "$TEST_RESULT" ]; then ! echo "##### PASS ##### ($TEST_EXE)" ! else ! echo "##### FAIL ##### ($TEST_EXE)" ! fi ! echo " ASL: $TEST_RESULT" ! else ! echo "##### NO TEST ##### ($TEST_EXE)" ! echo " Executable '$TEST_EXE' could not be found and was not tested" ! fi done --- 16,41 ---- for TEST_EXE in "./bindebug/md5_asl" "./bin/md5_asl" ; do ! if [ -x $TEST_EXE ]; then ! TEST_RESULT=`$TEST_EXE $1` ! ! if [ "$OPENSSL_RESULT" == "$TEST_RESULT" ]; then ! echo "##### PASS ##### ($TEST_EXE)" ! else ! echo "##### FAIL ##### ($TEST_EXE)" ! fi ! echo " ASL: $TEST_RESULT" ! else ! echo "##### NO TEST ##### ($TEST_EXE)" ! echo " Executable '$TEST_EXE' could not be found and was not tested" ! fi done Index: main.cpp =================================================================== RCS file: /cvsroot/adobe-source/adobe-source/adobe/test/md5/main.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** main.cpp 6 Jan 2006 18:35:26 -0000 1.2 --- main.cpp 3 Feb 2006 18:20:48 -0000 1.3 *************** *** 1,6 **** /* ! 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) */ --- 1,6 ---- /* ! 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) */ *************** *** 20,74 **** int main(int argc, char* argv[]) { ! if (argc <= 1) ! { ! std::cout << "usage: " << argv[0] << " [ file ]" << std::endl; ! std::cout << " generate the MD5 hash of a file" << std::endl; ! std::cout << " Adobe Source Libraries v" << ADOBE_VERSION_MAJOR << "." << ADOBE_VERSION_MINOR << "." << ADOBE_VERSION_SUBMINOR << std::endl; ! std::cout << " Boost v" << BOOST_VERSION / 100000 << "." << BOOST_VERSION / 100 % 1000 << "." << BOOST_VERSION % 100 << std::endl; ! return 1; ! } ! bool success(false); ! try ! { ! adobe::md5_t m; ! boost::filesystem::path file_path(argv[1], boost::filesystem::native); ! std::ifstream stream(file_path.native_file_string().c_str(), std::ios::binary | std::ios::in); ! while (stream.good()) ! { ! boost::array<std::ifstream::char_type, 256*1024> buffer; ! stream.read(&buffer[0], static_cast<std::streamsize>(buffer.size())); ! std::streamsize gcount(stream.gcount()); ! if (gcount > 0) m.update(&buffer[0], static_cast<std::size_t>(gcount)); ! } ! adobe::md5_t::digest_t hash(m.final()); ! adobe::md5_t::digest_t::iterator first(hash.begin()); ! adobe::md5_t::digest_t::iterator last(hash.end()); ! std::cout << "MD5(" << argv[1] << ")= "; ! for(; first != last; ++first) ! { ! std::cout.width(2); ! std::cout.fill('0'); ! std::cout << std::hex << static_cast<int>(*first); ! } ! std::cout << std::endl; ! success = true; ! } ! catch( const std::exception& error ) ! { std::cerr << "Exception: " << error.what() << std::endl; } ! catch( ... ) ! { std::cerr << "Unknown exception" << std::endl; } ! return success ? 0 : 1; } --- 20,74 ---- int main(int argc, char* argv[]) { ! if (argc <= 1) ! { ! std::cout << "usage: " << argv[0] << " [ file ]" << std::endl; ! std::cout << " generate the MD5 hash of a file" << std::endl; ! std::cout << " Adobe Source Libraries v" << ADOBE_VERSION_MAJOR << "." << ADOBE_VERSION_MINOR << "." << ADOBE_VERSION_SUBMINOR << std::endl; ! std::cout << " Boost v" << BOOST_VERSION / 100000 << "." << BOOST_VERSION / 100 % 1000 << "." << BOOST_VERSION % 100 << std::endl; ! return 1; ! } ! bool success(false); ! try ! { ! adobe::md5_t m; ! boost::filesystem::path file_path(argv[1], boost::filesystem::native); ! std::ifstream stream(file_path.native_file_string().c_str(), std::ios::binary | std::ios::in); ! while (stream.good()) ! { ! boost::array<std::ifstream::char_type, 256*1024> buffer; ! stream.read(&buffer[0], static_cast<std::streamsize>(buffer.size())); ! std::streamsize gcount(stream.gcount()); ! if (gcount > 0) m.update(&buffer[0], static_cast<std::size_t>(gcount)); ! } ! adobe::md5_t::digest_t hash(m.final()); ! adobe::md5_t::digest_t::iterator first(hash.begin()); ! adobe::md5_t::digest_t::iterator last(hash.end()); ! std::cout << "MD5(" << argv[1] << ")= "; ! for(; first != last; ++first) ! { ! std::cout.width(2); ! std::cout.fill('0'); ! std::cout << std::hex << static_cast<int>(*first); ! } ! std::cout << std::endl; ! success = true; ! } ! catch( const std::exception& error ) ! { std::cerr << "Exception: " << error.what() << std::endl; } ! catch( ... ) ! { std::cerr << "Unknown exception" << std::endl; } ! return success ? 0 : 1; } Index: check_md5.cpp =================================================================== RCS file: /cvsroot/adobe-source/adobe-source/adobe/test/md5/check_md5.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** check_md5.cpp 3 Jun 2005 16:35:45 -0000 1.1 --- check_md5.cpp 3 Feb 2006 18:20:48 -0000 1.2 *************** *** 14,76 **** int main(int argc, char* argv[]) { ! if (argc != 3) { ! std::cout << "usage: " << argv[0] << " hash file " << std::endl; ! std::cout << " check the MD5 hash of a file" << std::endl; ! std::cout << " Adobe Source Libraries v" << ADOBE_VERSION_MAJOR ! << "." << ADOBE_VERSION_MINOR << "." << ADOBE_VERSION_SUBMINOR << std::endl; ! std::cout << " Boost v" << BOOST_VERSION / 100000 << "." << BOOST_VERSION / 100 % 1000 ! << "." << BOOST_VERSION % 100 << std::endl; ! ! return 1; ! } ! bool success = false; ! try ! { ! adobe::md5_t m; ! boost::filesystem::path file_path(argv[2], boost::filesystem::native); ! boost::filesystem::ifstream stream(file_path, std::ios::binary | std::ios::in); ! while (stream.good()) ! { ! boost::array<std::ifstream::char_type, 256*1024> buffer; ! stream.read(&buffer[0], static_cast<std::streamsize>(buffer.size())); ! std::streamsize gcount(stream.gcount()); ! if (gcount > 0) m.update(&buffer[0], static_cast<std::size_t>(gcount)); ! } ! adobe::md5_t::digest_t hash(m.final()); ! adobe::md5_t::digest_t::iterator first(hash.begin()); ! adobe::md5_t::digest_t::iterator last(hash.end()); ! std::string actual; ! std::ostringstream oss(actual); ! for(; first != last; ++first){ ! oss.width(2); ! oss << std::hex << std::setw(2) << std::setfill('0') << static_cast<int>(*first); ! } ! ! std::string expected(argv[1]); ! std::string::iterator e(expected.begin()); ! success = oss.str() == expected; ! if(!success) ! std::cout << "Expected: " << expected ! << " actual: " << oss.str() << std::endl; ! ! } ! catch( const std::exception& error ) ! { ! std::cerr << "Exception: " << error.what() << std::endl; ! } ! catch( ... ) ! { ! std::cerr << "Unknown exception" << std::endl; ! } ! return success ? 0 : 1; } --- 14,76 ---- int main(int argc, char* argv[]) { ! if (argc != 3) { ! std::cout << "usage: " << argv[0] << " hash file " << std::endl; ! std::cout << " check the MD5 hash of a file" << std::endl; ! std::cout << " Adobe Source Libraries v" << ADOBE_VERSION_MAJOR ! << "." << ADOBE_VERSION_MINOR << "." << ADOBE_VERSION_SUBMINOR << std::endl; ! std::cout << " Boost v" << BOOST_VERSION / 100000 << "." << BOOST_VERSION / 100 % 1000 ! << "." << BOOST_VERSION % 100 << std::endl; ! ! return 1; ! } ! bool success = false; ! try ! { ! adobe::md5_t m; ! boost::filesystem::path file_path(argv[2], boost::filesystem::native); ! boost::filesystem::ifstream stream(file_path, std::ios::binary | std::ios::in); ! while (stream.good()) ! { ! boost::array<std::ifstream::char_type, 256*1024> buffer; ! stream.read(&buffer[0], static_cast<std::streamsize>(buffer.size())); ! std::streamsize gcount(stream.gcount()); ! if (gcount > 0) m.update(&buffer[0], static_cast<std::size_t>(gcount)); ! } ! adobe::md5_t::digest_t hash(m.final()); ! adobe::md5_t::digest_t::iterator first(hash.begin()); ! adobe::md5_t::digest_t::iterator last(hash.end()); ! std::string actual; ! std::ostringstream oss(actual); ! for(; first != last; ++first){ ! oss.width(2); ! oss << std::hex << std::setw(2) << std::setfill('0') << static_cast<int>(*first); ! } ! ! std::string expected(argv[1]); ! std::string::iterator e(expected.begin()); ! success = oss.str() == expected; ! if(!success) ! std::cout << "Expected: " << expected ! << " actual: " << oss.str() << std::endl; ! ! } ! catch( const std::exception& error ) ! { ! std::cerr << "Exception: " << error.what() << std::endl; ! } ! catch( ... ) ! { ! std::cerr << "Unknown exception" << std::endl; ! } ! return success ? 0 : 1; } |
From: Foster B. <fos...@us...> - 2006-02-03 18:21:00
|
Update of /cvsroot/adobe-source/adobe-source/adobe/test/forest_smoke In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1031/adobe/test/forest_smoke Modified Files: main.cpp Log Message: asl 1.0.13 Index: main.cpp =================================================================== RCS file: /cvsroot/adobe-source/adobe-source/adobe/test/forest_smoke/main.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** main.cpp 6 Jan 2006 18:35:25 -0000 1.1 --- main.cpp 3 Feb 2006 18:20:48 -0000 1.2 *************** *** 11,67 **** void output(const R& f) { ! typedef typename boost::range_iterator<R>::type iterator; ! for (iterator first(boost::begin(f)), last(boost::end(f)); first != last; ++first) ! { ! for (typename iterator::difference_type i(first.depth()); i != 0; --i) ! { ! std::cout << "\t"; ! } ! if (first.edge() == adobe::forest_leading_edge) ! { ! std::cout << "<" << *first << ">" << std::endl; ! } ! else ! { ! std::cout << "</" << *first << ">" << std::endl; ! } ! } } ! int main() { ! typedef adobe::forest<std::string> forest; ! typedef forest::iterator iterator; ! std::cout << "<- default construction and insert ->" << std::endl; ! forest f; ! iterator i (f.begin()); ! i = adobe::trailing_of(f.insert(i, "grandmother")); ! { ! iterator p (adobe::trailing_of(f.insert(i, "mother"))); ! f.insert(p, "me"); ! f.insert(p, "sister"); ! f.insert(p, "brother"); ! } ! { ! iterator p (adobe::trailing_of(f.insert(i, "aunt"))); ! f.insert(p, "cousin"); ! } ! f.insert(i, "uncle"); ! ! output(adobe::depth_range(f)); ! std::cout << "<- copy construction and reverse ->" << std::endl; ! ! forest f2(f); ! iterator f2_grandmother(adobe::find(adobe::preorder_range(f2), "grandmother").base()); ! f2.reverse(adobe::child_begin(f2_grandmother), adobe::child_end(f2_grandmother)); ! ! output(adobe::depth_range(f2)); ! ! std::cout << "<- reverse iterator ->" << std::endl; ! ! output(adobe::depth_range(adobe::reverse_fullorder_range(f))); ! return 0; } --- 11,67 ---- void output(const R& f) { ! typedef typename boost::range_iterator<R>::type iterator; ! for (iterator first(boost::begin(f)), last(boost::end(f)); first != last; ++first) ! { ! for (typename iterator::difference_type i(first.depth()); i != 0; --i) ! { ! std::cout << "\t"; ! } ! if (first.edge() == adobe::forest_leading_edge) ! { ! std::cout << "<" << *first << ">" << std::endl; ! } ! else ! { ! std::cout << "</" << *first << ">" << std::endl; ! } ! } } ! int main() { ! typedef adobe::forest<std::string> forest; ! typedef forest::iterator iterator; ! std::cout << "<- default construction and insert ->" << std::endl; ! forest f; ! iterator i (f.begin()); ! i = adobe::trailing_of(f.insert(i, "grandmother")); ! { ! iterator p (adobe::trailing_of(f.insert(i, "mother"))); ! f.insert(p, "me"); ! f.insert(p, "sister"); ! f.insert(p, "brother"); ! } ! { ! iterator p (adobe::trailing_of(f.insert(i, "aunt"))); ! f.insert(p, "cousin"); ! } ! f.insert(i, "uncle"); ! ! output(adobe::depth_range(f)); ! std::cout << "<- copy construction and reverse ->" << std::endl; ! ! forest f2(f); ! iterator f2_grandmother(adobe::find(adobe::preorder_range(f2), "grandmother").base()); ! f2.reverse(adobe::child_begin(f2_grandmother), adobe::child_end(f2_grandmother)); ! ! output(adobe::depth_range(f2)); ! ! std::cout << "<- reverse iterator ->" << std::endl; ! ! output(adobe::depth_range(adobe::reverse_fullorder_range(f))); ! return 0; } |
From: Foster B. <fos...@us...> - 2006-02-03 18:20:59
|
Update of /cvsroot/adobe-source/adobe-source/ide_projects/vc8 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1031/ide_projects/vc8 Modified Files: adobe_all.vsprops adobe_release.vsprops adobe_widgets.vsprops asl.vcproj asl_dev.vcproj begin.vcproj boost_filesystem.vcproj boost_signals.vcproj boost_thread.vcproj widgets.vcproj Added Files: beginWPF.vcproj widgetsWPF.vcproj Log Message: asl 1.0.13 Index: asl.vcproj =================================================================== RCS file: /cvsroot/adobe-source/adobe-source/ide_projects/vc8/asl.vcproj,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** asl.vcproj 2 Dec 2005 02:52:57 -0000 1.1 --- asl.vcproj 3 Feb 2006 18:20:49 -0000 1.2 *************** *** 18,23 **** <Configuration Name="Debug|Win32" - OutputDirectory="$(SolutionDir)$(ConfigurationName)" - IntermediateDirectory="$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets=".\boost_all.vsprops;.\adobe_all.vsprops" --- 18,21 ---- *************** *** 84,89 **** <Configuration Name="Release|Win32" - OutputDirectory="$(SolutionDir)$(ConfigurationName)" - IntermediateDirectory="$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets=".\boost_all.vsprops;.\adobe_release.vsprops;.\adobe_all.vsprops" --- 82,85 ---- Index: boost_filesystem.vcproj =================================================================== RCS file: /cvsroot/adobe-source/adobe-source/ide_projects/vc8/boost_filesystem.vcproj,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** boost_filesystem.vcproj 2 Dec 2005 02:52:57 -0000 1.1 --- boost_filesystem.vcproj 3 Feb 2006 18:20:49 -0000 1.2 *************** *** 18,23 **** <Configuration Name="Debug|Win32" - OutputDirectory="$(SolutionDir)$(ConfigurationName)" - IntermediateDirectory="$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets=".\boost_all.vsprops" --- 18,21 ---- *************** *** 81,86 **** <Configuration Name="Release|Win32" - OutputDirectory="$(SolutionDir)$(ConfigurationName)" - IntermediateDirectory="$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets=".\boost_all.vsprops;.\adobe_release.vsprops" --- 79,82 ---- *************** *** 179,186 **** > </Filter> - <File - RelativePath=".\ReadMe.txt" - > - </File> </Files> <Globals> --- 175,178 ---- --- NEW FILE: widgetsWPF.vcproj --- <?xml version="1.0" encoding="Windows-1252"?> <VisualStudioProject ProjectType="Visual C++" Version="8.00" Name="widgetsWPF" 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" ManagedExtensions="1" > <Tool Name="VCPreBuildEventTool" /> <Tool Name="VCCustomBuildTool" /> <Tool Name="VCXMLDataGeneratorTool" /> <Tool Name="VCWebServiceProxyGeneratorTool" /> <Tool Name="VCMIDLTool" /> <Tool Name="VCCLCompilerTool" Optimization="0" AdditionalIncludeDirectories="" MinimalRebuild="false" BasicRuntimeChecks="0" RuntimeLibrary="3" UsePrecompiledHeader="0" WarningLevel="3" Detect64BitPortabilityProblems="true" DebugInformationFormat="3" DisableSpecificWarnings="4561;4793" /> <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" ManagedExtensions="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="4561;4793" /> <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_widgets.vsprops =================================================================== RCS file: /cvsroot/adobe-source/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:52:57 -0000 1.1 --- adobe_widgets.vsprops 3 Feb 2006 18:20:49 -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: adobe_all.vsprops =================================================================== RCS file: /cvsroot/adobe-source/adobe-source/ide_projects/vc8/adobe_all.vsprops,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** adobe_all.vsprops 2 Dec 2005 02:52:57 -0000 1.1 --- adobe_all.vsprops 3 Feb 2006 18:20:49 -0000 1.2 *************** *** 4,7 **** --- 4,9 ---- Version="8.00" Name="adobe_all" + OutputDirectory="$(SolutionDir)build\$(PlatformName)\$(ConfigurationName)\$(ProjectName)" + IntermediateDirectory="$(SolutionDir)build\$(PlatformName)\$(ConfigurationName)\$(ProjectName)" > <Tool Index: boost_signals.vcproj =================================================================== RCS file: /cvsroot/adobe-source/adobe-source/ide_projects/vc8/boost_signals.vcproj,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** boost_signals.vcproj 2 Dec 2005 02:52:57 -0000 1.1 --- boost_signals.vcproj 3 Feb 2006 18:20:49 -0000 1.2 *************** *** 18,23 **** <Configuration Name="Debug|Win32" - OutputDirectory="$(SolutionDir)$(ConfigurationName)" - IntermediateDirectory="$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets=".\boost_all.vsprops" --- 18,21 ---- *************** *** 82,87 **** <Configuration Name="Release|Win32" - OutputDirectory="$(SolutionDir)$(ConfigurationName)" - IntermediateDirectory="$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets=".\boost_all.vsprops;.\adobe_release.vsprops" --- 80,83 ---- *************** *** 184,191 **** > </Filter> - <File - RelativePath=".\ReadMe.txt" - > - </File> </Files> <Globals> --- 180,183 ---- Index: asl_dev.vcproj =================================================================== RCS file: /cvsroot/adobe-source/adobe-source/ide_projects/vc8/asl_dev.vcproj,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** asl_dev.vcproj 2 Dec 2005 02:52:57 -0000 1.1 --- asl_dev.vcproj 3 Feb 2006 18:20:49 -0000 1.2 *************** *** 18,23 **** <Configuration Name="Debug|Win32" - OutputDirectory="$(SolutionDir)$(ConfigurationName)" - IntermediateDirectory="$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets=".\adobe_debug.vsprops;.\asl_dev_all.vsprops" --- 18,21 ---- *************** *** 81,86 **** <Configuration Name="Release|Win32" - OutputDirectory="$(SolutionDir)$(ConfigurationName)" - IntermediateDirectory="$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets=".\adobe_release.vsprops;.\asl_dev_all.vsprops" --- 79,82 ---- *************** *** 170,173 **** --- 166,173 ---- </File> <File + RelativePath="..\..\adobe\source\basic_sheet.cpp" + > + </File> + <File RelativePath="..\..\adobe\source\dictionary.cpp" > *************** *** 218,221 **** --- 218,225 ---- </File> <File + RelativePath="..\..\adobe\future\source\modal_dialog_interface.cpp" + > + </File> + <File RelativePath="..\..\adobe\source\name.cpp" > *************** *** 554,561 **** > </Filter> - <File - RelativePath=".\ReadMe.txt" - > - </File> </Files> <Globals> --- 558,561 ---- Index: widgets.vcproj =================================================================== RCS file: /cvsroot/adobe-source/adobe-source/ide_projects/vc8/widgets.vcproj,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** widgets.vcproj 2 Dec 2005 02:52:57 -0000 1.1 --- widgets.vcproj 3 Feb 2006 18:20:49 -0000 1.2 *************** *** 18,23 **** <Configuration Name="Debug|Win32" - OutputDirectory="$(SolutionDir)$(ConfigurationName)" - IntermediateDirectory="$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets=".\adobe_widgets.vsprops;.\adobe_debug.vsprops" --- 18,21 ---- *************** *** 82,87 **** <Configuration Name="Release|Win32" - OutputDirectory="$(SolutionDir)$(ConfigurationName)" - IntermediateDirectory="$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets=".\adobe_widgets.vsprops;.\adobe_release.vsprops" --- 80,83 ---- *************** *** 157,170 **** </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 --- 153,202 ---- </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 *************** *** 177,186 **** </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> --- 209,254 ---- </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> *************** *** 245,252 **** > </Filter> - <File - RelativePath=".\ReadMe.txt" - > - </File> </Files> <Globals> --- 313,316 ---- Index: adobe_release.vsprops =================================================================== RCS file: /cvsroot/adobe-source/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:52:57 -0000 1.1 --- adobe_release.vsprops 3 Feb 2006 18:20:49 -0000 1.2 *************** *** 10,12 **** --- 10,16 ---- WarnAsError="true" /> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG" + /> </VisualStudioPropertySheet> --- NEW FILE: beginWPF.vcproj --- <?xml version="1.0" encoding="Windows-1252"?> <VisualStudioProject ProjectType="Visual C++" Version="8.00" Name="beginWPF" 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" ManagedExtensions="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="false" BasicRuntimeChecks="0" RuntimeLibrary="3" UsePrecompiledHeader="0" WarningLevel="3" Detect64BitPortabilityProblems="true" DebugInformationFormat="3" DisableSpecificWarnings="4561;4793" /> <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" AssemblyDebug="1" 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" ManagedExtensions="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="4561;4793" /> <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" /> <AssemblyReference RelativePath="PresentationCore.dll" AssemblyName="PresentationCore, Version=6.0.5070.0, PublicKeyToken=31bf3856ad364e35, processorArchitecture=IA64" /> <AssemblyReference RelativePath="PresentationFramework.dll" AssemblyName="PresentationFramework, Version=6.0.5070.0, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" /> <AssemblyReference RelativePath="WindowsBase.dll" AssemblyName="WindowsBase, Version=6.0.5070.0, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" /> </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: begin.vcproj =================================================================== RCS file: /cvsroot/adobe-source/adobe-source/ide_projects/vc8/begin.vcproj,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** begin.vcproj 2 Dec 2005 02:52:57 -0000 1.1 --- begin.vcproj 3 Feb 2006 18:20:49 -0000 1.2 *************** *** 18,23 **** <Configuration Name="Debug|Win32" - OutputDirectory="$(SolutionDir)$(ConfigurationName)" - IntermediateDirectory="$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets=".\adobe_widgets.vsprops;.\adobe_debug.vsprops" --- 18,21 ---- *************** *** 98,103 **** <Configuration Name="Release|Win32" - OutputDirectory="$(SolutionDir)$(ConfigurationName)" - IntermediateDirectory="$(ConfigurationName)" ConfigurationType="1" InheritedPropertySheets=".\adobe_widgets.vsprops;.\adobe_release.vsprops" --- 96,99 ---- *************** *** 210,233 **** </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 --- 206,211 ---- </File> <File ! RelativePath="..\..\adobe\test\begin\sources\win32\main.cpp" > </File> <File *************** *** 286,289 **** --- 264,339 ---- </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> Index: boost_thread.vcproj =================================================================== RCS file: /cvsroot/adobe-source/adobe-source/ide_projects/vc8/boost_thread.vcproj,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** boost_thread.vcproj 6 Jan 2006 18:35:28 -0000 1.2 --- boost_thread.vcproj 3 Feb 2006 18:20:49 -0000 1.3 *************** *** 18,23 **** <Configuration Name="Debug|Win32" - OutputDirectory="$(SolutionDir)$(ConfigurationName)" - IntermediateDirectory="$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets=".\boost_all.vsprops" --- 18,21 ---- *************** *** 82,87 **** <Configuration Name="Release|Win32" - OutputDirectory="$(SolutionDir)$(ConfigurationName)" - IntermediateDirectory="$(ConfigurationName)" ConfigurationType="4" InheritedPropertySheets=".\boost_all.vsprops" --- 80,83 ---- *************** *** 212,219 **** > </Filter> - <File - RelativePath=".\ReadMe.txt" - > - </File> </Files> <Globals> --- 208,211 ---- |
From: Foster B. <fos...@us...> - 2006-02-03 18:20:59
|
Update of /cvsroot/adobe-source/adobe-source/stationery/asl_client_stationery In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1031/stationery/asl_client_stationery Modified Files: info.plist main.cpp version.plist Log Message: asl 1.0.13 Index: info.plist =================================================================== RCS file: /cvsroot/adobe-source/adobe-source/stationery/asl_client_stationery/info.plist,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** info.plist 8 Aug 2005 16:37:28 -0000 1.1 --- info.plist 3 Feb 2006 18:20:50 -0000 1.2 *************** *** 3,24 **** <plist version="1.0"> <dict> ! <key>CFBundleDevelopmentRegion</key> ! <string>English</string> ! <key>CFBundleExecutable</key> ! <string>ASLClientStationery</string> ! <key>CFBundleIconFile</key> ! <string></string> ! <key>CFBundleIdentifier</key> ! <string>com.apple.myCarbonApp</string> ! <key>CFBundleInfoDictionaryVersion</key> ! <string>6.0</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> --- 3,24 ---- <plist version="1.0"> <dict> ! <key>CFBundleDevelopmentRegion</key> ! <string>English</string> ! <key>CFBundleExecutable</key> ! <string>ASLClientStationery</string> ! <key>CFBundleIconFile</key> ! <string></string> ! <key>CFBundleIdentifier</key> ! <string>com.apple.myCarbonApp</string> ! <key>CFBundleInfoDictionaryVersion</key> ! <string>6.0</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> Index: main.cpp =================================================================== RCS file: /cvsroot/adobe-source/adobe-source/stationery/asl_client_stationery/main.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** main.cpp 8 Aug 2005 16:37:28 -0000 1.1 --- main.cpp 3 Feb 2006 18:20:50 -0000 1.2 *************** *** 12,15 **** #endif { ! return 0; } \ No newline at end of file --- 12,15 ---- #endif { ! return 0; } \ No newline at end of file Index: version.plist =================================================================== RCS file: /cvsroot/adobe-source/adobe-source/stationery/asl_client_stationery/version.plist,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** version.plist 8 Aug 2005 16:37:28 -0000 1.1 --- version.plist 3 Feb 2006 18:20:50 -0000 1.2 *************** *** 3,16 **** <plist version="1.0"> <dict> ! <key>BuildVersion</key> ! <string>92</string> ! <key>CFBundleVersion</key> ! <string>1.0</string> ! <key>ProductBuildVersion</key> ! <string>7K571</string> ! <key>ProjectName</key> ! <string>NibPBTemplates</string> ! <key>SourceVersion</key> ! <string>1200000</string> </dict> </plist> --- 3,16 ---- <plist version="1.0"> <dict> ! <key>BuildVersion</key> ! <string>92</string> ! <key>CFBundleVersion</key> ! <string>1.0</string> ! <key>ProductBuildVersion</key> ! <string>7K571</string> ! <key>ProjectName</key> ! <string>NibPBTemplates</string> ! <key>SourceVersion</key> ! <string>1200000</string> </dict> </plist> |
From: Foster B. <fos...@us...> - 2006-02-03 18:20:59
|
Update of /cvsroot/adobe-source/adobe-source/ide_projects/vc8/Release In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1031/ide_projects/vc8/Release Removed Files: editor.adm editor.eve glossary.xstr Log Message: asl 1.0.13 --- editor.eve DELETED --- --- glossary.xstr DELETED --- --- editor.adm DELETED --- |
From: Foster B. <fos...@us...> - 2006-02-03 18:20:59
|
Update of /cvsroot/adobe-source/adobe-source/ide_projects/darwin/asl_widgets.xcodeproj In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1031/ide_projects/darwin/asl_widgets.xcodeproj Modified Files: project.pbxproj Log Message: asl 1.0.13 Index: project.pbxproj =================================================================== RCS file: /cvsroot/adobe-source/adobe-source/ide_projects/darwin/asl_widgets.xcodeproj/project.pbxproj,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** project.pbxproj 6 Jan 2006 18:35:28 -0000 1.1 --- project.pbxproj 3 Feb 2006 18:20:49 -0000 1.2 *************** *** 13,22 **** CE5C20A3094799FA00EB4BB6 /* display.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CE5C209F094799FA00EB4BB6 /* display.cpp */; }; CE5C20A4094799FA00EB4BB6 /* metrics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CE5C20A0094799FA00EB4BB6 /* metrics.cpp */; }; ! CE5C20A5094799FA00EB4BB6 /* ui_core_implementation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CE5C20A1094799FA00EB4BB6 /* ui_core_implementation.cpp */; settings = {COMPILER_FLAGS = "-Wno-deprecated-declarations"; }; }; CE5C20A6094799FA00EB4BB6 /* ui_overlay.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CE5C20A2094799FA00EB4BB6 /* ui_overlay.cpp */; }; CE5C22AF0947ADD700EB4BB6 /* assemblage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CE5C22AB0947ADD700EB4BB6 /* assemblage.cpp */; }; ! CE5C22B00947ADD700EB4BB6 /* iomanip_asl_cel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CE5C22AC0947ADD700EB4BB6 /* iomanip_asl_cel.cpp */; }; ! CE5C22B10947ADD700EB4BB6 /* iomanip_pdf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CE5C22AD0947ADD700EB4BB6 /* iomanip_pdf.cpp */; }; ! CE5C22B20947ADD700EB4BB6 /* iomanip.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CE5C22AE0947ADD700EB4BB6 /* iomanip.cpp */; }; CEC06A0B0948A55300AFC610 /* libasl_dev.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CEC06A080948A54600AFC610 /* libasl_dev.a */; }; /* End PBXBuildFile section */ --- 13,20 ---- CE5C20A3094799FA00EB4BB6 /* display.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CE5C209F094799FA00EB4BB6 /* display.cpp */; }; CE5C20A4094799FA00EB4BB6 /* metrics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CE5C20A0094799FA00EB4BB6 /* metrics.cpp */; }; ! CE5C20A5094799FA00EB4BB6 /* ui_core_implementation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CE5C20A1094799FA00EB4BB6 /* ui_core_implementation.cpp */; }; CE5C20A6094799FA00EB4BB6 /* ui_overlay.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CE5C20A2094799FA00EB4BB6 /* ui_overlay.cpp */; }; CE5C22AF0947ADD700EB4BB6 /* assemblage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CE5C22AB0947ADD700EB4BB6 /* assemblage.cpp */; }; ! CE65D142098AC94E00AA59D0 /* os_utilities.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CE65D141098AC94E00AA59D0 /* os_utilities.cpp */; settings = {COMPILER_FLAGS = "-Wno-deprecated-declarations"; }; }; CEC06A0B0948A55300AFC610 /* libasl_dev.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CEC06A080948A54600AFC610 /* libasl_dev.a */; }; /* End PBXBuildFile section */ *************** *** 66,72 **** CE5C20A2094799FA00EB4BB6 /* ui_overlay.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = ui_overlay.cpp; path = ../../adobe/future/widgets/sources/mac/ui_overlay.cpp; sourceTree = SOURCE_ROOT; }; CE5C22AB0947ADD700EB4BB6 /* assemblage.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = assemblage.cpp; path = ../../adobe/future/source/assemblage.cpp; sourceTree = SOURCE_ROOT; }; ! CE5C22AC0947ADD700EB4BB6 /* iomanip_asl_cel.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = iomanip_asl_cel.cpp; path = ../../adobe/future/source/iomanip_asl_cel.cpp; sourceTree = SOURCE_ROOT; }; ! CE5C22AD0947ADD700EB4BB6 /* iomanip_pdf.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = iomanip_pdf.cpp; path = ../../adobe/future/source/iomanip_pdf.cpp; sourceTree = SOURCE_ROOT; }; ! CE5C22AE0947ADD700EB4BB6 /* iomanip.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = iomanip.cpp; path = ../../adobe/future/source/iomanip.cpp; sourceTree = SOURCE_ROOT; }; CEC069FC0948A54600AFC610 /* asl_dev.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = asl_dev.xcodeproj; sourceTree = "<group>"; }; D2AAC046055464E500DB518D /* libasl_widgets.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libasl_widgets.a; sourceTree = BUILT_PRODUCTS_DIR; }; --- 64,68 ---- CE5C20A2094799FA00EB4BB6 /* ui_overlay.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = ui_overlay.cpp; path = ../../adobe/future/widgets/sources/mac/ui_overlay.cpp; sourceTree = SOURCE_ROOT; }; CE5C22AB0947ADD700EB4BB6 /* assemblage.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = assemblage.cpp; path = ../../adobe/future/source/assemblage.cpp; sourceTree = SOURCE_ROOT; }; ! CE65D141098AC94E00AA59D0 /* os_utilities.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = os_utilities.cpp; path = ../../adobe/future/widgets/sources/mac/os_utilities.cpp; sourceTree = SOURCE_ROOT; }; CEC069FC0948A54600AFC610 /* asl_dev.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = asl_dev.xcodeproj; sourceTree = "<group>"; }; D2AAC046055464E500DB518D /* libasl_widgets.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libasl_widgets.a; sourceTree = BUILT_PRODUCTS_DIR; }; *************** *** 101,107 **** children = ( CE5C22AB0947ADD700EB4BB6 /* assemblage.cpp */, - CE5C22AC0947ADD700EB4BB6 /* iomanip_asl_cel.cpp */, - CE5C22AD0947ADD700EB4BB6 /* iomanip_pdf.cpp */, - CE5C22AE0947ADD700EB4BB6 /* iomanip.cpp */, CE5C209F094799FA00EB4BB6 /* display.cpp */, CE5C20A0094799FA00EB4BB6 /* metrics.cpp */, --- 97,100 ---- *************** *** 111,114 **** --- 104,108 ---- CE5C2098094799D100EB4BB6 /* ui_core_common.cpp */, CE5C2099094799D100EB4BB6 /* ui_core.cpp */, + CE65D141098AC94E00AA59D0 /* os_utilities.cpp */, ); name = Source; *************** *** 239,245 **** CE5C20A6094799FA00EB4BB6 /* ui_overlay.cpp in Sources */, CE5C22AF0947ADD700EB4BB6 /* assemblage.cpp in Sources */, ! CE5C22B00947ADD700EB4BB6 /* iomanip_asl_cel.cpp in Sources */, ! CE5C22B10947ADD700EB4BB6 /* iomanip_pdf.cpp in Sources */, ! CE5C22B20947ADD700EB4BB6 /* iomanip.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; --- 233,237 ---- CE5C20A6094799FA00EB4BB6 /* ui_overlay.cpp in Sources */, CE5C22AF0947ADD700EB4BB6 /* assemblage.cpp in Sources */, ! CE65D142098AC94E00AA59D0 /* os_utilities.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; |
From: Foster B. <fos...@us...> - 2006-02-03 18:20:59
|
Update of /cvsroot/adobe-source/adobe-source/adobe/test/gil In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1031/adobe/test/gil Modified Files: dynamic_image.cpp gil_test_config.hpp image.cpp main.cpp pixel.cpp pixel_iterator.cpp stdafx.h Log Message: asl 1.0.13 Index: dynamic_image.cpp =================================================================== RCS file: /cvsroot/adobe-source/adobe-source/adobe/test/gil/dynamic_image.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** dynamic_image.cpp 6 Jan 2006 18:35:26 -0000 1.1 --- dynamic_image.cpp 3 Feb 2006 18:20:48 -0000 1.2 *************** *** 1,6 **** /* ! 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) */ // image_test.cpp : Defines the entry point for the console application. --- 1,6 ---- /* ! 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) */ // image_test.cpp : Defines the entry point for the console application. *************** *** 33,49 **** template <typename V> const point2<int>& get_size(const image<V>& img) { ! return view(img).dimensions(); } // BEGIN GLUE CODE struct size2_fn { ! typedef const point2<int>& result_type; ! template <typename V> ! result_type operator()(const image<V>& img) const { return get_size(img); } }; template <typename C> const point2<int>& get_size(const variant<C>& img) { ! return img.apply_visitor(size2_fn()); } // END GLUE CODE --- 33,49 ---- template <typename V> const point2<int>& get_size(const image<V>& img) { ! return view(img).dimensions(); } // BEGIN GLUE CODE struct size2_fn { ! typedef const point2<int>& result_type; ! template <typename V> ! result_type operator()(const image<V>& img) const { return get_size(img); } }; template <typename C> const point2<int>& get_size(const variant<C>& img) { ! return img.apply_visitor(size2_fn()); } // END GLUE CODE *************** *** 52,91 **** // non-const operation struct set_firstp_fn { ! typedef void result_type; ! template <typename I> ! result_type operator()(image<I>& img) const { img(0,0)=img(1,0); } }; void test_dynamic_views(const std::string& fileName) { ! const std::string in_dir="C:\\test\\imgtest\\"; ! const std::string out_dir=in_dir+"newimg_output\\generic\\"; ! /* rgb8_image rgb8; ! load_image(rgb8, in_dir+fileName); ! gray8_image gray8(view(rgb8).dimensions()); ! copy_and_convert_pixels(view(rgb8),view(gray8)); ! save_view(view(gray8), out_dir+"gray8_converted.jpg"); */ ! any_image anyImg; ! load_image(anyImg, in_dir+fileName); ! std::cerr <<"File: "<<in_dir+fileName<<" height:"<<get_height(view(anyImg))<<" numChannels:"<<get_num_channels(view(anyImg))<<std::endl; /* This overflows the VC compiler ! any_image anyImg2; ! anyImg2.move_in(gray8_image(get_dimensions(view(anyImg)))); ! copy_and_convert_pixels(view(anyImg),view(anyImg2)); ! save_view(view(anyImg2), out_dir+"gray8_converted.jpg"); */ ! gray8_image gray8(get_dimensions(view(anyImg))); ! //copy_and_convert_pixels(view(anyImg),view(gray8)); copy_pixels(view(anyImg),view(gray8)); ! save_view(view(gray8), out_dir+"gray8_converted.jpg"); ! save_view(fliplr_view(view(anyImg)), out_dir+"fliplr.jpg"); ! save_view(flipud_view(view(anyImg)), out_dir+"flipud.jpg"); ! any_view subimageView=subimage_view(view(anyImg),point2<ptrdiff_t>(0,0),point2<ptrdiff_t>(100,100)); ! save_view(subimageView, out_dir+"subimage.jpg"); ! save_view(subsampled_view(rotated180_view(view(anyImg)), point2<ptrdiff_t>(2,1)),out_dir+"subsampled180rot.jpg"); } --- 52,91 ---- // non-const operation struct set_firstp_fn { ! typedef void result_type; ! template <typename I> ! result_type operator()(image<I>& img) const { img(0,0)=img(1,0); } }; void test_dynamic_views(const std::string& fileName) { ! const std::string in_dir="C:\\test\\imgtest\\"; ! const std::string out_dir=in_dir+"newimg_output\\generic\\"; ! /* rgb8_image rgb8; ! load_image(rgb8, in_dir+fileName); ! gray8_image gray8(view(rgb8).dimensions()); ! copy_and_convert_pixels(view(rgb8),view(gray8)); ! save_view(view(gray8), out_dir+"gray8_converted.jpg"); */ ! any_image anyImg; ! load_image(anyImg, in_dir+fileName); ! std::cerr <<"File: "<<in_dir+fileName<<" height:"<<get_height(view(anyImg))<<" numChannels:"<<get_num_channels(view(anyImg))<<std::endl; /* This overflows the VC compiler ! any_image anyImg2; ! anyImg2.move_in(gray8_image(get_dimensions(view(anyImg)))); ! copy_and_convert_pixels(view(anyImg),view(anyImg2)); ! save_view(view(anyImg2), out_dir+"gray8_converted.jpg"); */ ! gray8_image gray8(get_dimensions(view(anyImg))); ! //copy_and_convert_pixels(view(anyImg),view(gray8)); copy_pixels(view(anyImg),view(gray8)); ! save_view(view(gray8), out_dir+"gray8_converted.jpg"); ! save_view(fliplr_view(view(anyImg)), out_dir+"fliplr.jpg"); ! save_view(flipud_view(view(anyImg)), out_dir+"flipud.jpg"); ! any_view subimageView=subimage_view(view(anyImg),point2<ptrdiff_t>(0,0),point2<ptrdiff_t>(100,100)); ! save_view(subimageView, out_dir+"subimage.jpg"); ! save_view(subsampled_view(rotated180_view(view(anyImg)), point2<ptrdiff_t>(2,1)),out_dir+"subsampled180rot.jpg"); } *************** *** 97,147 **** void test_gimage() { ! test_dynamic_views("RGB.tif"); ! test_dynamic_views("gray.jpg"); } /* void test_gimage2() { ! typedef variant<AnyImageConceptSpace> AnyImage; ! typedef variant<AnyImageViewConceptSpace> AnyImageView; ! // static bool c1=PIXELS_COMPATIBLE(rgb8_pixel, rgb8_pixel); ! BOOST_STATIC_ASSERT(PIXELS_COMPATIBLE(rgb8_pixel, rgb8_pixel)); ! BOOST_STATIC_ASSERT(PIXELS_COMPATIBLE(bgr8_pixel, rgb8c_pixel)); ! BOOST_STATIC_ASSERT(!PIXELS_COMPATIBLE(bgr8_pixel, rgba8_pixel)); ! rgb8_image img1(10,10); ! fill_pixels(view(img1),rgb8_pixel(100,50,25)); ! AnyImageView imv1=view(img1); ! bgr8_image img2(10,10); ! AnyImageView imv2=view(img2); ! copy_pixels(imv1, imv2); ! copy_pixels(imv2, view(img1)); ! copy_pixels(view(img1), imv2); ! point2<int> sz=get_size(img1); ! // const cmyk8_image img2(point_type(10,10)); ! // cmyk16_image img2(point_type(10,10)); ! rgb8_view v=view(img1); ! AnyImageView av(view(img1)); ! AnyImage defaultConstructed; ! { ! rgb8_image r8(point2<int>(8,8)); ! AnyImage anyImg(rgb8_image(point2<int>(8,8)), true); ! rgb8_image r88(point2<int>(8,8)); ! anyImg.move_in(r88); ! int stop=0; ! // sz=get_size(anyImg); ! } } */ --- 97,147 ---- void test_gimage() { ! test_dynamic_views("RGB.tif"); ! test_dynamic_views("gray.jpg"); } /* void test_gimage2() { ! typedef variant<AnyImageConceptSpace> AnyImage; ! typedef variant<AnyImageViewConceptSpace> AnyImageView; ! // static bool c1=PIXELS_COMPATIBLE(rgb8_pixel, rgb8_pixel); ! BOOST_STATIC_ASSERT(PIXELS_COMPATIBLE(rgb8_pixel, rgb8_pixel)); ! BOOST_STATIC_ASSERT(PIXELS_COMPATIBLE(bgr8_pixel, rgb8c_pixel)); ! BOOST_STATIC_ASSERT(!PIXELS_COMPATIBLE(bgr8_pixel, rgba8_pixel)); ! rgb8_image img1(10,10); ! fill_pixels(view(img1),rgb8_pixel(100,50,25)); ! AnyImageView imv1=view(img1); ! bgr8_image img2(10,10); ! AnyImageView imv2=view(img2); ! copy_pixels(imv1, imv2); ! copy_pixels(imv2, view(img1)); ! copy_pixels(view(img1), imv2); ! point2<int> sz=get_size(img1); ! // const cmyk8_image img2(point_type(10,10)); ! // cmyk16_image img2(point_type(10,10)); ! rgb8_view v=view(img1); ! AnyImageView av(view(img1)); ! AnyImage defaultConstructed; ! { ! rgb8_image r8(point2<int>(8,8)); ! AnyImage anyImg(rgb8_image(point2<int>(8,8)), true); ! rgb8_image r88(point2<int>(8,8)); ! anyImg.move_in(r88); ! int stop=0; ! // sz=get_size(anyImg); ! } } */ Index: main.cpp =================================================================== RCS file: /cvsroot/adobe-source/adobe-source/adobe/test/gil/main.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** main.cpp 6 Jan 2006 18:35:26 -0000 1.1 --- main.cpp 3 Feb 2006 18:20:48 -0000 1.2 *************** *** 1,6 **** /* ! 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) */ // image_test.cpp : Defines the entry point for the console application. --- 1,6 ---- /* ! 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) */ // image_test.cpp : Defines the entry point for the console application. *************** *** 14,26 **** { #ifdef NO_ASL ! test_integral_image(); ! performance_test(); #endif ! test_pixel(); ! test_pixel_iterator(); ! // test_image_io(); ! test_image(); ! // test_image_tiler(); } --- 14,26 ---- { #ifdef NO_ASL ! test_integral_image(); ! performance_test(); #endif ! test_pixel(); ! test_pixel_iterator(); ! // test_image_io(); ! test_image(); ! // test_image_tiler(); } Index: pixel.cpp =================================================================== RCS file: /cvsroot/adobe-source/adobe-source/adobe/test/gil/pixel.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** pixel.cpp 6 Jan 2006 18:35:26 -0000 1.1 --- pixel.cpp 3 Feb 2006 18:20:48 -0000 1.2 *************** *** 1,6 **** /* ! 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) */ // image_test.cpp : Defines the entry point for the console application. --- 1,6 ---- /* ! 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) */ // image_test.cpp : Defines the entry point for the console application. *************** *** 37,289 **** template <typename T> struct clear_fn { ! void operator()(T& v) { v=0; } }; template <typename T> inline void ignore_unused_variable_warning(const T&){} void test_pixel() { ! gil_function_requires<MutableChannelConcept<bits8> >(); ! gil_function_requires<MutableChannelConcept<bits8&> >(); ! gil_function_requires<ChannelConcept<const bits8&> >(); ! gil_function_requires<MutableChannelConcept<bits16> >(); ! gil_function_requires<MutableChannelConcept<bits32> >(); ! gil_function_requires<MutablePixelConcept<bgr32_pixel> >(); ! gil_function_requires<MutablePixelConcept<rgb16_planar_ref> >(); ! gil_function_requires<PixelConcept<rgb8c_pixel> >(); ! gil_function_requires<PixelsConvertibleConcept<rgb8_pixel,cmyk16_pixel> >(); ! gil_function_requires<PixelsConvertibleConcept<rgb8_pixel,cmyk16_planar_ref> >(); ! gil_function_requires<PixelsConvertibleConcept<gray8c_pixel,cmyk16_planar_ref> >(); ! BOOST_STATIC_ASSERT(rgb_tag::num_channels==3); ! BOOST_STATIC_ASSERT(bgr_tag::num_channels==3); ! // dimensions to explore ! // ! // values, references, pointers ! // color spaces (rgb,cmyk,gray) ! // channel ordering (bgr vs rgb) ! // planar vs interleaved // PIXEL VALUES // Default constructors and construct with values ! rgb8_pixel rgb8(10,100,200); ! bgr8_pixel bgr8(10,100,200); ! rgb32_pixel rgb32(0.1f, 0.5f, 0.7f); ! per_channel_set_op(std::bind2nd(std::plus<bits8>(),3),rgb8,rgb8); ! cmyk8_pixel cmyk8; ! rgba8_pixel rgba8; ! gray8_pixel gray8(11); ! rgb16_pixel rgb16; ! cmyk16_pixel cmyk16; ! rgba16_pixel rgba16; ! bits8 mv=max_channel(rgb8); ! mv=min_channel(rgb8); // Copy construct from compatible pixel ! rgb8_pixel rgb8_1(rgb8); ! cmyk16_pixel cmyk16_1(cmyk16); ! bgr8_pixel bgr8_1(rgb8); // with different channel ordering ! assert(bgr8_1==rgb8); ! // RGB8 fail1(cmyk8); // error: different color space ! // RGB8 fail2(rgb16); // error: different channel depth // Assignment to compatible pixel ! rgb8_1=rgb8; ! bgr8_1=rgb8_pixel(1,2,3); ! rgb8_1=bgr8_1; ! assert(rgb8_1.r==1); ! ! // rgb8=rgba8; // error different color space ! // rgb8=rgb16; // error different channel depth ! // rgb8_pixel result=bgr8_1+rgb8; // PIXEL REFERENCES ! // rgb8ref rgb8ref_err; // error: references have no default constructors // Assign/copy-construct reference from value ! rgb8_ref rgb8ref(rgb8); ! rgb8_planar_ref rgb8planarref(rgb8); ! rgb8planarref=rgb8_pixel(11,22,32); ! unsigned char rr=rgb8planarref[2]; ignore_unused_variable_warning(rr); ! assert(rgb8planarref[2]==32); ! assert(rgb8[2]==32); ! rgb32_pixel r32=rgb32_pixel(1,2,3); ! rgb32_planar_ref rgb32pr(r32); ! bits32 xty=rgb32pr[2]; ignore_unused_variable_warning(xty); ! assert(xty==3); ! assert(r32[2]==3); ! const rgb8_pixel& CR(rgb8); ! rgb8ref=CR; ! rgb8c_pixel rgb8c(1,2,3); ! //BOOST_STATIC_ASSERT((boost::is_same<bits8,REMOVE_CONST_AND_REFERENCE(const bits8&)>::value)); ! rgb8c_planar_ref rgb8c_ref=rgb8c; ! // rgb8=rgb8c_pixel(1,2,3); ! assert(rgb8ref.b==rgb8.b); ! assert(rgb8==rgb8ref); ! assert(rgb8planarref==rgb8ref); ! boost::add_const<iterator_traits<rgb8_ptr>::reference>::type rgb8_const_ref(rgb8); ! // rgb8_const_ref=rgb8_pixel(3,5,7); // error: setting value of const reference ! rgb8planarref.b=33; ! assert(rgb8_const_ref.b==33); ! bgr8_ref bgr8_ref(bgr8); ! gray8_ref gray8_ref(gray8); // copy-construct reference from reference ! rgb8_ref rgb8ref_1(rgb8ref); ! rgb8_planar_ref rgb8planarref_1(rgb8ref); // planar from non-planar reference is ok ! // rgb8_ref rgb8ref_1_err(rgb8planarref); // error: non-planar from planar reference ! cmyk8_planar_ref cpr(cmyk8); ! int a=5, b=6; ! const int& cr=a; ! const rgb8_planar_ref cr_(rgb8); ! int& nr=b; ! rgb8_planar_ref nr_(rgb8); ! const int& cr2(cr); ignore_unused_variable_warning(cr2); ! const rgb8_planar_ref cr2_(cr_); ! const int& cr3(nr); ignore_unused_variable_warning(cr3); ! const rgb8_planar_ref cr3_(nr_); ! // SHOULD NOT COMPILE BUT IT DOES!! Bizzare because reference class' copy constructor takes argument by non-const reference, so it should not match "const rgb8_planar_ref" ! // int& nr2(cr); ! rgb8_planar_ref _nr2(cr_); // ERROR: reference from const reference ! int& nr3(nr); ignore_unused_variable_warning(nr3); ! rgb8_planar_ref _nr3(nr_); ! // cr=nr; ! // cr_=nr_; // ERROR: assigning to const reference ! nr=cr; ! nr_=cr_; ! // cr=cr; ! // cr_=cr_; ! nr=nr; ! nr_=nr_; // Assign value or reference to reference ! rgb8ref=rgb8_pixel(3,5,7); ! rgb8ref=rgb8ref_1; ! // rgb8_const_ref=rgb8ref; // error: const from non-const ! rgb8ref=rgb8_const_ref; // non-const from const // PIXEL POINTERS ! // typedef const iterator_traits<rgb8_ptr>::pointer RGB8ConstPtr; ! typedef const rgb8_ptr RGB8ConstPtr; ! typedef const rgb8_planar_ptr RGB8ConstPlanarPtr; ! // typedef const iterator_traits<rgb8_planar_ptr>::pointer RGB8ConstPlanarPtr; // constructing from values, references and other pointers ! RGB8ConstPtr rgb8_const_ptr=NULL; ignore_unused_variable_warning(rgb8_const_ptr); ! rgb8_ptr rgb8ptr=&rgb8; ! rgb8=bgr8_pixel(30,20,10); ! rgb8_planar_ptr rgb8_pptr=&rgb8; ! ++rgb8_pptr; ! rgb8_pptr--; ! rgb8_pptr[0]=rgb8; ! RGB8ConstPlanarPtr rgb8_const_planar_ptr=&rgb8; ! // rgb8_const_planar_ptr=&rgb16p; // error: incompatible bit depth ! // iterator_traits<CMYK8>::pointer cmyk8_ptr=&rgb8; // error: incompatible pointer type ! RGB8ConstPtr rgb8_const_ptr_err=rgb8ptr; // const pointer from non-regular pointer ignore_unused_variable_warning(rgb8_const_ptr_err); // dereferencing pointers to obtain references ! rgb8_ref rgb8ref_2=*rgb8ptr; ignore_unused_variable_warning(rgb8ref_2); ! assert(rgb8ref_2==rgb8); ! // RGB8Ref rgb8ref_2_err=*rgb8_const_planar_ptr; // error: non-const reference from const pointer ! ! rgb8_planar_ref rgb8planarref_3=*rgb8_pptr; // planar reference from planar pointer ! assert(rgb8planarref_3==rgb8); ! // RGB8Ref rgb8ref_3=*rgb8_planar_ptr; // error: non-planar reference from planar pointer ! const rgb8_pixel crgb8=rgb8; ! *rgb8_pptr=rgb8; ! *rgb8_pptr=crgb8; ! byte_advance(rgb8_pptr,3); ! byte_advance(rgb8_pptr,-3); // CHANNEL OPERATIONS ! ! // on values ! bgr8.b=3; ! rgb8.g=bgr8.b; rgb8.v<0>(); bgr8.v<0>(); ! assert(rgb8.g==3); ! // on references ! rgb8ref_1.g=bgr8_ref.r; ! bgr8_ref.b=3; ! // rgb8_const_ref.b=3; // error: modifying channel of const reference // OPERATOR== ! // rgb8==cmyk8; // error: incompatible color spaces ! rgb8==bgr8; // classes with different channel ordering are OK to compare ! rgb8_planar_ref rf=*rgb8_pptr; // COLOR CONVERSION ! color_convert(rgb16, gray8); ! // typedef iterator_traits<iterator_traits<rgb8_planar_ptr>::reference*>::color_space_type cst; ! // BOOST_STATIC_ASSERT((boost::is_same<rgb_tag,cst>::value)); ! color_convert(rgb16, rf); ! color_convert(rgb16, rf=*rgb8_pptr); ! color_convert(*rgb8_const_planar_ptr, gray8_ref); ! color_convert(rgb8ref, gray8_ref); ! // color_convert(rgb8ref, *rgb8_const_ptr); // error: Destination is const // CHANNEL-LEVEL OPERATIONS ! bgr8*=2; ! bgr8=rf*2; ! rgb8_pixel rgb8_2=bgr8/3; ! rf=bgr8*2; // MATH OPERATIONS ! rgba8*=3; ! rgba8=rgba8+rgba8_pixel(1,2,3,4); ! rgb8+=bgr8_pixel(1,2,3); ! rgb8=bgr8+rgb8; ! unsigned char* xxx=0; ! xxx+=2; ! rgb8_pptr.p.v<0>()=xxx; ! set_channels(rgb8_pptr.p,xxx); } --- 37,289 ---- template <typename T> struct clear_fn { ! void operator()(T& v) { v=0; } }; template <typename T> inline void ignore_unused_variable_warning(const T&){} void test_pixel() { ! gil_function_requires<MutableChannelConcept<bits8> >(); ! gil_function_requires<MutableChannelConcept<bits8&> >(); ! gil_function_requires<ChannelConcept<const bits8&> >(); ! gil_function_requires<MutableChannelConcept<bits16> >(); ! gil_function_requires<MutableChannelConcept<bits32> >(); ! gil_function_requires<MutablePixelConcept<bgr32_pixel> >(); ! gil_function_requires<MutablePixelConcept<rgb16_planar_ref> >(); ! gil_function_requires<PixelConcept<rgb8c_pixel> >(); ! gil_function_requires<PixelConvertibleConcept<rgb8_pixel,cmyk16_pixel> >(); ! gil_function_requires<PixelConvertibleConcept<rgb8_pixel,cmyk16_planar_ref> >(); ! gil_function_requires<PixelConvertibleConcept<gray8c_pixel,cmyk16_planar_ref> >(); ! BOOST_STATIC_ASSERT(rgb_tag::num_channels==3); ! BOOST_STATIC_ASSERT(bgr_tag::num_channels==3); ! // dimensions to explore ! // ! // values, references, pointers ! // color spaces (rgb,cmyk,gray) ! // channel ordering (bgr vs rgb) ! // planar vs interleaved // PIXEL VALUES // Default constructors and construct with values ! rgb8_pixel rgb8(10,100,200); ! bgr8_pixel bgr8(10,100,200); ! rgb32_pixel rgb32(0.1f, 0.5f, 0.7f); ! per_channel_set_op(std::bind2nd(std::plus<bits8>(),3),rgb8,rgb8); ! cmyk8_pixel cmyk8; ! rgba8_pixel rgba8; ! gray8_pixel gray8(11); ! rgb16_pixel rgb16; ! cmyk16_pixel cmyk16; ! rgba16_pixel rgba16; ! bits8 mv=max_channel(rgb8); ! mv=min_channel(rgb8); // Copy construct from compatible pixel ! rgb8_pixel rgb8_1(rgb8); ! cmyk16_pixel cmyk16_1(cmyk16); ! bgr8_pixel bgr8_1(rgb8); // with different channel ordering ! assert(bgr8_1==rgb8); ! // RGB8 fail1(cmyk8); // error: different color space ! // RGB8 fail2(rgb16); // error: different channel depth // Assignment to compatible pixel ! rgb8_1=rgb8; ! bgr8_1=rgb8_pixel(1,2,3); ! rgb8_1=bgr8_1; ! assert(rgb8_1.r==1); ! ! // rgb8=rgba8; // error different color space ! // rgb8=rgb16; // error different channel depth ! // rgb8_pixel result=bgr8_1+rgb8; // PIXEL REFERENCES ! // rgb8ref rgb8ref_err; // error: references have no default constructors // Assign/copy-construct reference from value ! rgb8_ref rgb8ref(rgb8); ! rgb8_planar_ref rgb8planarref(rgb8); ! rgb8planarref=rgb8_pixel(11,22,32); ! unsigned char rr=rgb8planarref[2]; ignore_unused_variable_warning(rr); ! assert(rgb8planarref[2]==32); ! assert(rgb8[2]==32); ! rgb32_pixel r32=rgb32_pixel(1,2,3); ! rgb32_planar_ref rgb32pr(r32); ! bits32 xty=rgb32pr[2]; ignore_unused_variable_warning(xty); ! assert(xty==3); ! assert(r32[2]==3); ! const rgb8_pixel& CR(rgb8); ! rgb8ref=CR; ! rgb8c_pixel rgb8c(1,2,3); ! //BOOST_STATIC_ASSERT((boost::is_same<bits8,REMOVE_CONST_AND_REFERENCE(const bits8&)>::value)); ! rgb8c_planar_ref rgb8c_ref=rgb8c; ! // rgb8=rgb8c_pixel(1,2,3); ! assert(rgb8ref.b==rgb8.b); ! assert(rgb8==rgb8ref); ! assert(rgb8planarref==rgb8ref); ! boost::add_const<iterator_traits<rgb8_ptr>::reference>::type rgb8_const_ref(rgb8); ! // rgb8_const_ref=rgb8_pixel(3,5,7); // error: setting value of const reference ! rgb8planarref.b=33; ! assert(rgb8_const_ref.b==33); ! bgr8_ref bgr8_ref(bgr8); ! gray8_ref gray8_ref(gray8); // copy-construct reference from reference ! rgb8_ref rgb8ref_1(rgb8ref); ! rgb8_planar_ref rgb8planarref_1(rgb8ref); // planar from non-planar reference is ok ! // rgb8_ref rgb8ref_1_err(rgb8planarref); // error: non-planar from planar reference ! cmyk8_planar_ref cpr(cmyk8); ! int a=5, b=6; ! const int& cr=a; ! const rgb8_planar_ref cr_(rgb8); ! int& nr=b; ! rgb8_planar_ref nr_(rgb8); ! const int& cr2(cr); ignore_unused_variable_warning(cr2); ! const rgb8_planar_ref cr2_(cr_); ! const int& cr3(nr); ignore_unused_variable_warning(cr3); ! const rgb8_planar_ref cr3_(nr_); ! // SHOULD NOT COMPILE BUT IT DOES!! Bizzare because reference class' copy constructor takes argument by non-const reference, so it should not match "const rgb8_planar_ref" ! // int& nr2(cr); ! rgb8_planar_ref _nr2(cr_); // ERROR: reference from const reference ! int& nr3(nr); ignore_unused_variable_warning(nr3); ! rgb8_planar_ref _nr3(nr_); ! // cr=nr; ! // cr_=nr_; // ERROR: assigning to const reference ! nr=cr; ! nr_=cr_; ! // cr=cr; ! // cr_=cr_; ! nr=nr; ! nr_=nr_; // Assign value or reference to reference ! rgb8ref=rgb8_pixel(3,5,7); ! rgb8ref=rgb8ref_1; ! // rgb8_const_ref=rgb8ref; // error: const from non-const ! rgb8ref=rgb8_const_ref; // non-const from const // PIXEL POINTERS ! // typedef const iterator_traits<rgb8_ptr>::pointer RGB8ConstPtr; ! typedef const rgb8_ptr RGB8ConstPtr; ! typedef const rgb8_planar_ptr RGB8ConstPlanarPtr; ! // typedef const iterator_traits<rgb8_planar_ptr>::pointer RGB8ConstPlanarPtr; // constructing from values, references and other pointers ! RGB8ConstPtr rgb8_const_ptr=NULL; ignore_unused_variable_warning(rgb8_const_ptr); ! rgb8_ptr rgb8ptr=&rgb8; ! rgb8=bgr8_pixel(30,20,10); ! rgb8_planar_ptr rgb8_pptr=&rgb8; ! ++rgb8_pptr; ! rgb8_pptr--; ! rgb8_pptr[0]=rgb8; ! RGB8ConstPlanarPtr rgb8_const_planar_ptr=&rgb8; ! // rgb8_const_planar_ptr=&rgb16p; // error: incompatible bit depth ! // iterator_traits<CMYK8>::pointer cmyk8_ptr=&rgb8; // error: incompatible pointer type ! RGB8ConstPtr rgb8_const_ptr_err=rgb8ptr; // const pointer from non-regular pointer ignore_unused_variable_warning(rgb8_const_ptr_err); // dereferencing pointers to obtain references ! rgb8_ref rgb8ref_2=*rgb8ptr; ignore_unused_variable_warning(rgb8ref_2); ! assert(rgb8ref_2==rgb8); ! // RGB8Ref rgb8ref_2_err=*rgb8_const_planar_ptr; // error: non-const reference from const pointer ! ! rgb8_planar_ref rgb8planarref_3=*rgb8_pptr; // planar reference from planar pointer ! assert(rgb8planarref_3==rgb8); ! // RGB8Ref rgb8ref_3=*rgb8_planar_ptr; // error: non-planar reference from planar pointer ! const rgb8_pixel crgb8=rgb8; ! *rgb8_pptr=rgb8; ! *rgb8_pptr=crgb8; ! byte_advance(rgb8_pptr,3); ! byte_advance(rgb8_pptr,-3); // CHANNEL OPERATIONS ! ! // on values ! bgr8.b=3; ! rgb8.g=bgr8.b; rgb8.v<0>(); bgr8.v<0>(); ! assert(rgb8.g==3); ! // on references ! rgb8ref_1.g=bgr8_ref.r; ! bgr8_ref.b=3; ! // rgb8_const_ref.b=3; // error: modifying channel of const reference // OPERATOR== ! // rgb8==cmyk8; // error: incompatible color spaces ! rgb8==bgr8; // classes with different channel ordering are OK to compare ! rgb8_planar_ref rf=*rgb8_pptr; // COLOR CONVERSION ! color_convert(rgb16, gray8); ! // typedef iterator_traits<iterator_traits<rgb8_planar_ptr>::reference*>::color_space_type cst; ! // BOOST_STATIC_ASSERT((boost::is_same<rgb_tag,cst>::value)); ! color_convert(rgb16, rf); ! color_convert(rgb16, rf=*rgb8_pptr); ! color_convert(*rgb8_const_planar_ptr, gray8_ref); ! color_convert(rgb8ref, gray8_ref); ! // color_convert(rgb8ref, *rgb8_const_ptr); // error: Destination is const // CHANNEL-LEVEL OPERATIONS ! bgr8*=2; ! bgr8=rf*2; ! rgb8_pixel rgb8_2=bgr8/3; ! rf=bgr8*2; // MATH OPERATIONS ! rgba8*=3; ! rgba8=rgba8+rgba8_pixel(1,2,3,4); ! rgb8+=bgr8_pixel(1,2,3); ! rgb8=bgr8+rgb8; ! unsigned char* xxx=0; ! xxx+=2; ! rgb8_pptr.p.v<0>()=xxx; ! set_channels(rgb8_pptr.p,xxx); } Index: pixel_iterator.cpp =================================================================== RCS file: /cvsroot/adobe-source/adobe-source/adobe/test/gil/pixel_iterator.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** pixel_iterator.cpp 6 Jan 2006 18:35:26 -0000 1.1 --- pixel_iterator.cpp 3 Feb 2006 18:20:48 -0000 1.2 *************** *** 1,6 **** /* ! 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) */ // image_test.cpp : Defines the entry point for the console application. --- 1,6 ---- /* ! 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) */ // image_test.cpp : Defines the entry point for the console application. *************** *** 29,160 **** template <typename T> inline void ignore_unused_variable_warning(const T&){} void test_pixel_iterator() { ! boost::function_requires<Point2DConcept<point2<int> > >(); ! boost::function_requires<MutablePixelIteratorConcept<bgr8_ptr> >(); ! boost::function_requires<MutablePixelIteratorConcept<cmyk8_planar_ptr> >(); ! boost::function_requires<PixelIteratorConcept<rgb8c_planar_step_ptr> >(); ! boost::function_requires<MutablePixelStepIteratorConcept<rgb8_step_ptr> >(); ! boost::function_requires<MutableXYLocatorConcept<rgb8_step_loc> >(); ! boost::function_requires<XYLocatorConcept<rgb8c_planar_step_loc> >(); ! boost::function_requires<MutablePixelStepIteratorConcept<cmyk8_planar_step_ptr> >(); ! boost::function_requires<PixelStepIteratorConcept<gray8c_step_ptr> >(); ! rgb8_pixel rgb8(1,2,3); ! rgb8_ptr ptr1=&rgb8; ! byte_advance(ptr1, 3); ! const rgb8_ptr ptr2=byte_advanced(ptr1,10); ! byte_distance(ptr1,ptr2); ! const rgb8_pixel& ref=byte_advanced_ref(ptr1,10); ignore_unused_variable_warning(ref); ! rgb8_planar_ptr planarPtr1(&rgb8); ! rgb8_planar_ptr planarPtr2(&rgb8); ! byte_advance(planarPtr1,10); ! byte_distance(planarPtr1,planarPtr2); ! rgb8_planar_ptr planarPtr3=byte_advanced(planarPtr1,10); ! pixel<bits8&,rgb_tag> pxl=*(planarPtr1+5); ! // rgb8_pixel pv=pxl; ! // rgb8_pixel pv=*(planarPtr1+5); ! rgb8_pixel pv=planarPtr1[5]; ! assert(*(planarPtr1+5)==planarPtr1[5]); ! rgb8_planar_ref planarRef=byte_advanced_ref(planarPtr1,10); ! rgb8_step_ptr stepIt(&rgb8,5); ! stepIt++; ! rgb8_step_ptr stepIt2=stepIt+10; ! stepIt2=stepIt; ! ! rgb8_step_ptr stepIt3(&rgb8,5); ! rgb8_pixel& ref1=stepIt3[5]; ! // bool v=boost::is_POD<iterator_traits<pixel_step_iterator<rgb8_ptr> >::value_type>::value; ! // v=boost::is_POD<rgb8_pixel>::value; ! // v=boost::is_POD<int>::value; ! rgb8_step_ptr rgb8StepIt(ptr1, 10); ! rgb8_step_ptr rgb8StepIt2=rgb8StepIt; ! rgb8StepIt=rgb8StepIt2; ! ++rgb8StepIt; ! rgb8_ref reff=*rgb8StepIt; ignore_unused_variable_warning(reff); ! rgb8StepIt+=10; ! ptrdiff_t dst=rgb8StepIt2-rgb8StepIt; ignore_unused_variable_warning(dst); ! rgb8_pixel val1=ref1; ! rgb8_ptr ptr=&ref1; ! rgb8_pixel& val21=stepIt3[5]; ! rgb8_pixel val22=val21; ! rgb8_pixel val2=stepIt3[5]; ! rgb8_ptr ptr11=&(stepIt3[5]); ignore_unused_variable_warning(ptr11); ! rgb8_ptr ptr3=&*(stepIt3+5); ignore_unused_variable_warning(ptr3); ! rgb8_step_ptr stepIt4(ptr,5); ! ++stepIt4; ! rgb8_step_ptr stepIt5; ! if (stepIt4==stepIt5) { ! int st=0;ignore_unused_variable_warning(st); } ! pixel_image_iterator<rgb8_loc> pix_img_it(rgb8_loc(ptr, 20), 5); ! ++pix_img_it; ! pix_img_it+=10; ! rgb8_pixel& refr=*pix_img_it; ! refr=rgb8_pixel(1,2,3); ! *pix_img_it=rgb8_pixel(1,2,3); ! pix_img_it[3]=rgb8_pixel(1,2,3); ! *(pix_img_it+3)=rgb8_pixel(1,2,3); ! pixel_image_iterator<rgb8c_loc> pix_img_it_c(rgb8c_loc(rgb8c_ptr(ptr),20), 5); ! ++pix_img_it_c; ! pix_img_it_c+=10; ! // *pix_img_it_c=rgb8_pixel(1,2,3); // error: assigning though const iterator ! typedef pixel_image_iterator<rgb8_loc>::difference_type dif_t; ! dif_t dt=0; ! ptrdiff_t tdt=dt; ignore_unused_variable_warning(tdt); ! // pixel_step_iterator<rgb8_pixel> stepIt3Err=stepIt+10; // error: non-const from const iterator ! pixel_xy_locator<rgb8_step_ptr> xy_locator(ptr,27); ! xy_locator.x()++; ! // pixel_step_iterator<rgb8_pixel>& yit=xy_locator.y(); ! xy_locator.y()++; ! xy_locator+=point2<int>(3,4); ! //*xy_locator=(xy_locator(-1,0)+xy_locator(0,1))/2; ! rgb8_pixel& rf=*xy_locator; ignore_unused_variable_warning(rf); ! typedef COLOR_CONVERT_ITERATOR(rgb8_ptr, rgb8_pixel) CCV; ! CCV ccv_it; ! make_step_iterator(ccv_it, 3); ! make_step_iterator(rgb8_ptr(),3); ! make_step_iterator(rgb8_planar_ptr(),3); ! make_step_iterator(rgb8_planar_step_ptr(),3); ! // xy_locator.y()++; // TEST dynamic_step_type ! BOOST_STATIC_ASSERT(( boost::is_same<cmyk16_step_ptr,std::iterator_traits<cmyk16_step_ptr>::dynamic_step_type>::value )); ! BOOST_STATIC_ASSERT(( boost::is_same<cmyk16_planar_step_ptr,std::iterator_traits<cmyk16_planar_ptr>::dynamic_step_type>::value )); ! BOOST_STATIC_ASSERT(( boost::is_same<dereference_iterator_adaptor< rgb8_step_ptr ,color_convert_deref_fn< rgb8_pixel > > ,std::iterator_traits< CCV >::dynamic_step_type>::value )); // TEST has_dynamic_step ! BOOST_STATIC_ASSERT(has_dynamic_step< cmyk16_step_ptr >::value); ! BOOST_STATIC_ASSERT(has_dynamic_step< cmyk16_planar_step_ptr >::value); ! BOOST_STATIC_ASSERT(!has_dynamic_step< cmyk16_planar_ptr >::value); ! BOOST_STATIC_ASSERT(!has_dynamic_step< COLOR_CONVERT_ITERATOR(rgb8_ptr, rgb8_pixel) >::value); ! BOOST_STATIC_ASSERT( has_dynamic_step< COLOR_CONVERT_ITERATOR(rgb8_step_ptr, rgb8_pixel) >::value); } --- 29,160 ---- template <typename T> inline void ignore_unused_variable_warning(const T&){} void test_pixel_iterator() { ! boost::function_requires<Point2DConcept<point2<int> > >(); ! boost::function_requires<MutablePixelIteratorConcept<bgr8_ptr> >(); ! boost::function_requires<MutablePixelIteratorConcept<cmyk8_planar_ptr> >(); ! boost::function_requires<PixelIteratorConcept<rgb8c_planar_step_ptr> >(); ! boost::function_requires<MutablePixelStepIteratorConcept<rgb8_step_ptr> >(); ! boost::function_requires<MutablePixelLocatorConcept<rgb8_step_loc> >(); ! boost::function_requires<PixelLocatorConcept<rgb8c_planar_step_loc> >(); ! boost::function_requires<MutablePixelStepIteratorConcept<cmyk8_planar_step_ptr> >(); ! boost::function_requires<PixelStepIteratorConcept<gray8c_step_ptr> >(); ! rgb8_pixel rgb8(1,2,3); ! rgb8_ptr ptr1=&rgb8; ! byte_advance(ptr1, 3); ! const rgb8_ptr ptr2=byte_advanced(ptr1,10); ! byte_distance(ptr1,ptr2); ! const rgb8_pixel& ref=byte_advanced_ref(ptr1,10); ignore_unused_variable_warning(ref); ! rgb8_planar_ptr planarPtr1(&rgb8); ! rgb8_planar_ptr planarPtr2(&rgb8); ! byte_advance(planarPtr1,10); ! byte_distance(planarPtr1,planarPtr2); ! rgb8_planar_ptr planarPtr3=byte_advanced(planarPtr1,10); ! pixel<bits8&,rgb_tag> pxl=*(planarPtr1+5); ! // rgb8_pixel pv=pxl; ! // rgb8_pixel pv=*(planarPtr1+5); ! rgb8_pixel pv=planarPtr1[5]; ! assert(*(planarPtr1+5)==planarPtr1[5]); ! rgb8_planar_ref planarRef=byte_advanced_ref(planarPtr1,10); ! rgb8_step_ptr stepIt(&rgb8,5); ! stepIt++; ! rgb8_step_ptr stepIt2=stepIt+10; ! stepIt2=stepIt; ! ! rgb8_step_ptr stepIt3(&rgb8,5); ! rgb8_pixel& ref1=stepIt3[5]; ! // bool v=boost::is_POD<iterator_traits<pixel_step_iterator<rgb8_ptr> >::value_type>::value; ! // v=boost::is_POD<rgb8_pixel>::value; ! // v=boost::is_POD<int>::value; ! rgb8_step_ptr rgb8StepIt(ptr1, 10); ! rgb8_step_ptr rgb8StepIt2=rgb8StepIt; ! rgb8StepIt=rgb8StepIt2; ! ++rgb8StepIt; ! rgb8_ref reff=*rgb8StepIt; ignore_unused_variable_warning(reff); ! rgb8StepIt+=10; ! ptrdiff_t dst=rgb8StepIt2-rgb8StepIt; ignore_unused_variable_warning(dst); ! rgb8_pixel val1=ref1; ! rgb8_ptr ptr=&ref1; ! rgb8_pixel& val21=stepIt3[5]; ! rgb8_pixel val22=val21; ! rgb8_pixel val2=stepIt3[5]; ! rgb8_ptr ptr11=&(stepIt3[5]); ignore_unused_variable_warning(ptr11); ! rgb8_ptr ptr3=&*(stepIt3+5); ignore_unused_variable_warning(ptr3); ! rgb8_step_ptr stepIt4(ptr,5); ! ++stepIt4; ! rgb8_step_ptr stepIt5; ! if (stepIt4==stepIt5) { ! int st=0;ignore_unused_variable_warning(st); } ! pixel_image_iterator<rgb8_loc> pix_img_it(rgb8_loc(ptr, 20), 5); ! ++pix_img_it; ! pix_img_it+=10; ! rgb8_pixel& refr=*pix_img_it; ! refr=rgb8_pixel(1,2,3); ! *pix_img_it=rgb8_pixel(1,2,3); ! pix_img_it[3]=rgb8_pixel(1,2,3); ! *(pix_img_it+3)=rgb8_pixel(1,2,3); ! pixel_image_iterator<rgb8c_loc> pix_img_it_c(rgb8c_loc(rgb8c_ptr(ptr),20), 5); ! ++pix_img_it_c; ! pix_img_it_c+=10; ! // *pix_img_it_c=rgb8_pixel(1,2,3); // error: assigning though const iterator ! typedef pixel_image_iterator<rgb8_loc>::difference_type dif_t; ! dif_t dt=0; ! ptrdiff_t tdt=dt; ignore_unused_variable_warning(tdt); ! // pixel_step_iterator<rgb8_pixel> stepIt3Err=stepIt+10; // error: non-const from const iterator ! pixel_xy_locator<rgb8_step_ptr> xy_locator(ptr,27); ! xy_locator.x()++; ! // pixel_step_iterator<rgb8_pixel>& yit=xy_locator.y(); ! xy_locator.y()++; ! xy_locator+=point2<int>(3,4); ! //*xy_locator=(xy_locator(-1,0)+xy_locator(0,1))/2; ! rgb8_pixel& rf=*xy_locator; ignore_unused_variable_warning(rf); ! typedef COLOR_CONVERT_ITERATOR(rgb8_ptr, rgb8_pixel) CCV; ! CCV ccv_it; ! make_step_iterator(ccv_it, 3); ! make_step_iterator(rgb8_ptr(),3); ! make_step_iterator(rgb8_planar_ptr(),3); ! make_step_iterator(rgb8_planar_step_ptr(),3); ! // xy_locator.y()++; // TEST dynamic_step_type ! BOOST_STATIC_ASSERT(( boost::is_same<cmyk16_step_ptr,std::iterator_traits<cmyk16_step_ptr>::dynamic_step_type>::value )); ! BOOST_STATIC_ASSERT(( boost::is_same<cmyk16_planar_step_ptr,std::iterator_traits<cmyk16_planar_ptr>::dynamic_step_type>::value )); ! BOOST_STATIC_ASSERT(( boost::is_same<dereference_iterator_adaptor< rgb8_step_ptr ,color_convert_deref_fn< rgb8_pixel > > ,std::iterator_traits< CCV >::dynamic_step_type>::value )); // TEST has_dynamic_step ! BOOST_STATIC_ASSERT(has_dynamic_step< cmyk16_step_ptr >::value); ! BOOST_STATIC_ASSERT(has_dynamic_step< cmyk16_planar_step_ptr >::value); ! BOOST_STATIC_ASSERT(!has_dynamic_step< cmyk16_planar_ptr >::value); ! BOOST_STATIC_ASSERT(!has_dynamic_step< COLOR_CONVERT_ITERATOR(rgb8_ptr, rgb8_pixel) >::value); ! BOOST_STATIC_ASSERT( has_dynamic_step< COLOR_CONVERT_ITERATOR(rgb8_step_ptr, rgb8_pixel) >::value); } Index: image.cpp =================================================================== RCS file: /cvsroot/adobe-source/adobe-source/adobe/test/gil/image.cpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** image.cpp 6 Jan 2006 18:35:26 -0000 1.1 --- image.cpp 3 Feb 2006 18:20:48 -0000 1.2 *************** *** 1,6 **** /* ! 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) */ // image_test.cpp : Defines the entry point for the console application. --- 1,6 ---- /* ! 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) */ // image_test.cpp : Defines the entry point for the console application. *************** *** 39,45 **** using namespace boost; ! const string in_dir="C:\\test\\imgtest\\"; // directory of source images ! const string out_dir=in_dir+"scratch\\"; // directory where to write output ! const string ref_dir=in_dir+"reference\\"; // reference directory to compare written with actual output // Enable checking. --- 39,45 ---- using namespace boost; ! const string in_dir="C:\\test\\imgtest\\"; // directory of source images ! const string out_dir=in_dir+"scratch\\"; // directory where to write output ! const string ref_dir=in_dir+"reference\\"; // reference directory to compare written with actual output // Enable checking. *************** *** 48,57 **** template <typename IMG_VIEW> void check_image(const IMG_VIEW& img_view, const string& imgName) { ! save_view(img_view,out_dir+imgName); ! rgb8_image img1, img2; ! load_image(img1, out_dir+imgName); #ifdef PERFORM_CHECK ! load_image(img2, ref_dir+imgName); ! io_error_if(img1!=img2,"image mismatch"); #endif } --- 48,57 ---- template <typename IMG_VIEW> void check_image(const IMG_VIEW& img_view, const string& imgName) { ! save_view(img_view,out_dir+imgName); ! rgb8_image img1, img2; ! load_image(img1, out_dir+imgName); #ifdef PERFORM_CHECK ! load_image(img2, ref_dir+imgName); ! io_error_if(img1!=img2,"image mismatch"); #endif } *************** *** 60,112 **** template <typename IMG> void test_image_basic(const std::string& prefix) { ! typedef typename IMG::view_type VIEW; ! // make a 20x20 image ! IMG img(typename VIEW::point_type(20,20)); ! const VIEW& img_view=view(img); ! // fill it with red ! rgb8_pixel red8(255,0,0), green8(0,255,0), blue8(0,0,255), white8(255,255,255); ! typename VIEW::value_type red,green,blue,white; ! color_convert(red8,red); ! red=color_converter<typename IMG::view_type::value_type>()(red8); ! color_convert(green8,green); ! color_convert(blue8,blue); ! color_convert(white8,white); ! fill(img_view.begin(),img_view.end(),red); ! // pointer to first pixel of second row typename VIEW::reference rt=img_view.at(0,0)[img_view.width()]; ! typename VIEW::x_iterator ptr=&rt; ignore_unused_variable_warning(ptr); typename VIEW::reference rt2=*(img_view.at(0,0)+img_view.width()); ! typename VIEW::x_iterator ptr2=&rt2; ignore_unused_variable_warning(ptr2); ! assert(ptr==ptr2); ! assert(img_view.x_at(0,0)+10==10+img_view.x_at(0,0)); ! // draw a blue line along the diagonal ! typename VIEW::xy_locator loc=img_view.xy_at(0,img_view.height()-1); ! for (int y=0; y<img_view.height(); ++y) { ! *loc=blue; ! ++loc.x(); ! loc.y()--; ! } ! // draw a green dotted line along the main diagonal with step of 3 ! loc=img_view.xy_at(img_view.width()-1,img_view.height()-1); ! while (loc.x()>=img_view.x_at(0,0)) { ! *loc=green; ! loc-=typename VIEW::point_type(3,3); ! } ! // Clone and make every red pixel white ! IMG imgWhite(img); ! for (typename VIEW::iterator it=view(imgWhite).end(); (it-1)!=view(imgWhite).begin(); --it) { ! if (*(it-1)==red) ! *(it-1)=white; ! } ! check_image(img_view,prefix+"red_x.jpg"); ! check_image(view(imgWhite),prefix+"white_x.jpg"); } --- 60,112 ---- template <typename IMG> void test_image_basic(const std::string& prefix) { ! typedef typename IMG::view_type VIEW; ! // make a 20x20 image ! IMG img(typename VIEW::point_type(20,20)); ! const VIEW& img_view=view(img); ! // fill it with red ! rgb8_pixel red8(255,0,0), green8(0,255,0), blue8(0,0,255), white8(255,255,255); ! typename VIEW::value_type red,green,blue,white; ! color_convert(red8,red); ! red=color_converter<typename IMG::view_type::value_type>()(red8); ! color_convert(green8,green); ! color_convert(blue8,blue); ! color_convert(white8,white); ! fill(img_view.begin(),img_view.end(),red); ! // pointer to first pixel of second row typename VIEW::reference rt=img_view.at(0,0)[img_view.width()]; ! typename VIEW::x_iterator ptr=&rt; ignore_unused_variable_warning(ptr); typename VIEW::reference rt2=*(img_view.at(0,0)+img_view.width()); ! typename VIEW::x_iterator ptr2=&rt2; ignore_unused_variable_warning(ptr2); ! assert(ptr==ptr2); ! assert(img_view.x_at(0,0)+10==10+img_view.x_at(0,0)); ! // draw a blue line along the diagonal ! typename VIEW::xy_locator loc=img_view.xy_at(0,img_view.height()-1); ! for (int y=0; y<img_view.height(); ++y) { ! *loc=blue; ! ++loc.x(); ! loc.y()--; ! } ! // draw a green dotted line along the main diagonal with step of 3 ! loc=img_view.xy_at(img_view.width()-1,img_view.height()-1); ! while (loc.x()>=img_view.x_at(0,0)) { ! *loc=green; ! loc-=typename VIEW::point_type(3,3); ! } ! // Clone and make every red pixel white ! IMG imgWhite(img); ! for (typename VIEW::iterator it=view(imgWhite).end(); (it-1)!=view(imgWhite).begin(); --it) { ! if (*(it-1)==red) ! *(it-1)=white; ! } ! check_image(img_view,prefix+"red_x.jpg"); ! check_image(view(imgWhite),prefix+"white_x.jpg"); } *************** *** 116,127 **** template <bool ON_REAL_DATA> struct test_nth_channel_view { ! template <typename VIEW> static void apply(const VIEW& img_view, const string& prefix) { ! check_image(nth_channel_view(img_view,0),prefix+"0th_channel.jpg"); ! } }; template <> struct test_nth_channel_view<false> { ! template <typename VIEW> static void apply(const VIEW& img_view, const string& prefix) {} }; --- 116,127 ---- template <bool ON_REAL_DATA> struct test_nth_channel_view { ! template <typename VIEW> static void apply(const VIEW& img_view, const string& prefix) { ! check_image(nth_channel_view(img_view,0),prefix+"0th_channel.jpg"); ! } }; template <> struct test_nth_channel_view<false> { ! template <typename VIEW> static void apply(const VIEW& img_view, const string& prefix) {} }; *************** *** 129,187 **** template <typename VIEW> void test_image_views(const VIEW& img_view, const string& prefix) { ! check_image(img_view,prefix+"original.jpg"); ! check_image(subimage_view(img_view, round(img_view.dimensions()/4), round(img_view.dimensions()/2)),prefix+"cropped.jpg"); ! check_image(color_convert_view<gray8_pixel>(img_view),prefix+"gray8.jpg"); ! // check_image(transpose_view(img_view),prefix+"transpose.jpg"); ! check_image(rotated180_view(img_view),prefix+"rot180.jpg"); ! check_image(rotated90cw_view(img_view),prefix+"90cw.jpg"); ! check_image(rotated90ccw_view(img_view),prefix+"90ccw.jpg"); ! check_image(flipud_view(img_view),prefix+"flipped_ud.jpg"); ! check_image(fliplr_view(img_view),prefix+"flipped_lr.jpg"); ! check_image(subsampled_view(img_view,typename VIEW::point_type(2,1)),prefix+"subsampled.jpg"); ! test_nth_channel_view<std::iterator_traits<typename VIEW::x_iterator>::pixel_data_is_real>::apply(img_view,prefix+"0th_channel.jpg"); ! // some iterator math ! ptrdiff_t dst=(img_view.end()-(img_view.begin()+4500))+4500; ignore_unused_variable_warning(dst); ! ptrdiff_t dst2=img_view.end()-img_view.begin(); ignore_unused_variable_warning(dst2); ! ptrdiff_t sz=img_view.size(); ignore_unused_variable_warning(sz); ! //assert(dst==dst2);//does not work for empty images ! assert(sz==dst2); ! // histogram ! test_histogram(img_view); } template <typename GRAY_VIEW, typename R> void gray_image_hist(const GRAY_VIEW& img_view, R& hist) { ! //for_each_pixel(img_view,++lambda::var(hist)[lambda::_1]); ! for (typename GRAY_VIEW::iterator it=img_view.begin(); it!=img_view.end(); ++it) ! ++hist[*it]; } template <typename V, typename R> void get_hist(const V& img_view, R& hist) { ! gray_image_hist(color_convert_view<gray8_pixel>(img_view), hist); } template <typename VIEW> void test_histogram(const VIEW& img_view) { ! // std::vector<int> histogram(255,0); ! // get_hist(cropped,histogram.begin()); ! int histogram[255]; ! fill(histogram,histogram+255,0); ! get_hist(img_view,histogram); ! std::cout<<endl; ! std::for_each(histogram, histogram+255, std::cout << lambda::_1 << ' '); } template <typename IMG> void test_image_all(const string& prefix) { ! test_image_basic<IMG>(prefix+"basic_"); ! IMG img; ! load_jpeg_image(img,in_dir+"monkey.jpg"); ! test_image_views(view(img), prefix+"views_"); } --- 129,187 ---- template <typename VIEW> void test_image_views(const VIEW& img_view, const string& prefix) { ! check_image(img_view,prefix+"original.jpg"); ! check_image(subimage_view(img_view, round(img_view.dimensions()/4), round(img_view.dimensions()/2)),prefix+"cropped.jpg"); ! check_image(color_convert_view<gray8_pixel>(img_view),prefix+"gray8.jpg"); ! // check_image(transpose_view(img_view),prefix+"transpose.jpg"); ! check_image(rotated180_view(img_view),prefix+"rot180.jpg"); ! check_image(rotated90cw_view(img_view),prefix+"90cw.jpg"); ! check_image(rotated90ccw_view(img_view),prefix+"90ccw.jpg"); ! check_image(flipud_view(img_view),prefix+"flipped_ud.jpg"); ! check_image(fliplr_view(img_view),prefix+"flipped_lr.jpg"); ! check_image(subsampled_view(img_view,typename VIEW::point_type(2,1)),prefix+"subsampled.jpg"); ! test_nth_channel_view<std::iterator_traits<typename VIEW::x_iterator>::pixel_data_is_real>::apply(img_view,prefix+"0th_channel.jpg"); ! // some iterator math ! ptrdiff_t dst=(img_view.end()-(img_view.begin()+4500))+4500; ignore_unused_variable_warning(dst); ! ptrdiff_t dst2=img_view.end()-img_view.begin(); ignore_unused_variable_warning(dst2); ! ptrdiff_t sz=img_view.size(); ignore_unused_variable_warning(sz); ! //assert(dst==dst2);//does not work for empty images ! assert(sz==dst2); ! // histogram ! test_histogram(img_view); } template <typename GRAY_VIEW, typename R> void gray_image_hist(const GRAY_VIEW& img_view, R& hist) { ! //for_each_pixel(img_view,++lambda::var(hist)[lambda::_1]); ! for (typename GRAY_VIEW::iterator it=img_view.begin(); it!=img_view.end(); ++it) ! ++hist[*it]; } template <typename V, typename R> void get_hist(const V& img_view, R& hist) { ! gray_image_hist(color_convert_view<gray8_pixel>(img_view), hist); } template <typename VIEW> void test_histogram(const VIEW& img_view) { ! // std::vector<int> histogram(255,0); ! // get_hist(cropped,histogram.begin()); ! int histogram[255]; ! fill(histogram,histogram+255,0); ! get_hist(img_view,histogram); ! std::cout<<endl; ! std::for_each(histogram, histogram+255, std::cout << lambda::_1 << ' '); } template <typename IMG> void test_image_all(const string& prefix) { ! test_image_basic<IMG>(prefix+"basic_"); ! IMG img; ! load_jpeg_image(img,in_dir+"monkey.jpg"); ! test_image_views(view(img), prefix+"views_"); } *************** *** 190,202 **** template <typename IMG> void my_const_test(const IMG& img) { ! typename IMG::const_view_type v=const_view(img); ! // v(0,0)=pixel<T,CS>(); } template <typename T, typename CS> void my_test() { ! typename image_type<T,CS,true>::type imgs(100,100); ! typename view_type<T,CS,true>::type v=view(imgs); ! my_const_test(imgs); } --- 190,202 ---- template <typename IMG> void my_const_test(const IMG& img) { ! typename IMG::const_view_type v=const_view(img); ! // v(0,0)=pixel<T,CS>(); } template <typename T, typename CS> void my_test() { ! typename image_type<T,CS,true>::type imgs(100,100); ! typename view_type<T,CS,true>::type v=view(imgs); ! my_const_test(imgs); } *************** *** 211,273 **** void test_resample() { ! gil_function_requires<MutableImageViewConcept<rgb8_view> >(); ! gil_function_requires<ImageViewConcept<cmyk8c_planar_step_view> >(); ! gil_function_requires<MutableImageConcept<rgb8_image> >(); ! rgb8_image img; ! load_jpeg_image(img,in_dir+"monkey.jpg"); ! rgb8_image transf(rgb8_image::point_type(round(view(img).dimensions()/2))); #ifdef NO_ASL real_matrix ctm=real_matrix::get_rotate(15*3.14/180.0f); ! ctm*=real_matrix::get_translate(real_point(100,50)); ! resample_view(view(transf),const_view(img), ctm); ! save_view(view(transf), out_dir+"transformedBC.jpg"); ! resample_view(view(transf),const_view(img), ctm, kBilinear); ! save_view(view(transf), out_dir+"transformedBL.jpg"); ! resample_view(view(transf),const_view(img), ctm, kNearestNeighbor); ! save_view(view(transf), out_dir+"transformedNN.jpg"); #endif } void test_image() { ! gil_function_requires<ImageConcept<rgb8_image> >(); ! test_resample(); #ifdef NO_ASL ! CreateDirectory(in_dir.c_str(), NULL); ! CreateDirectory(out_dir.c_str(), NULL); ! CreateDirectory(ref_dir.c_str(), NULL); #endif ! // my_test<bits8,rgb_tag>(); ! // rgb8_planar_image im(point_type(10,10)); ! // for_each_pixel(view(im), planarOp()); ! test_image_all<bgr8_image>("bgr8_"); ! test_image_all<rgb8_image>("rgb8_"); ! test_image_all<rgb8_planar_image>("planarrgb8_"); ! test_image_all<gray8_image>("gray8_"); ! rgb8_image img; ! load_jpeg_image(img,in_dir+"monkey.jpg"); ! rgb8_image img2(view(img).dimensions()); ! copy(img.rbegin(),img.rend(), img2.begin()); ! save_view(view(img2),out_dir+"reversedMonkey.jpg"); ! // rgb8_image imgWithMargin; ! // create_with_margin(view(img), 100, imgWithMargin); ! // save_view(view(imgWithMargin),in_dir+"monkeyWithMargin.jpg"); ! test_image_views(subsampled_view(view(img),point_type(1,2)),"subsampled_"); ! BOOST_STATIC_ASSERT((!std::iterator_traits<COLOR_CONVERT_ITERATOR(rgb8_view::x_iterator,gray8_pixel) >::pixel_data_is_real)); ! test_image_views(color_convert_view<gray8_pixel>(view(img)),"color_converted_"); } --- 211,273 ---- void test_resample() { ! gil_function_requires<MutableImageViewConcept<rgb8_view> >(); ! gil_function_requires<ImageViewConcept<cmyk8c_planar_step_view> >(); ! gil_function_requires<MutableImageConcept<rgb8_image> >(); ! rgb8_image img; ! load_jpeg_image(img,in_dir+"monkey.jpg"); ! rgb8_image transf(rgb8_image::point_type(round(view(img).dimensions()/2))); #ifdef NO_ASL real_matrix ctm=real_matrix::get_rotate(15*3.14/180.0f); ! ctm*=real_matrix::get_translate(real_point(100,50)); ! resample_view(view(transf),const_view(img), ctm); ! save_view(view(transf), out_dir+"transformedBC.jpg"); ! resample_view(view(transf),const_view(img), ctm, kBilinear); ! save_view(view(transf), out_dir+"transformedBL.jpg"); ! resample_view(view(transf),const_view(img), ctm, kNearestNeighbor); ! save_view(view(transf), out_dir+"transformedNN.jpg"); #endif } void test_image() { ! gil_function_requires<ImageConcept<rgb8_image> >(); ! test_resample(); #ifdef NO_ASL ! CreateDirectory(in_dir.c_str(), NULL); ! CreateDirectory(out_dir.c_str(), NULL); ! CreateDirectory(ref_dir.c_str(), NULL); #endif ! // my_test<bits8,rgb_tag>(); ! // rgb8_planar_image im(point_type(10,10)); ! // for_each_pixel(view(im), planarOp()); ! test_image_all<bgr8_image>("bgr8_"); ! test_image_all<rgb8_image>("rgb8_"); ! test_image_all<rgb8_planar_image>("planarrgb8_"); ! test_image_all<gray8_image>("gray8_"); ! rgb8_image img; ! load_jpeg_image(img,in_dir+"monkey.jpg"); ! rgb8_image img2(view(img).dimensions()); ! copy(img.rbegin(),img.rend(), img2.begin()); ! save_view(view(img2),out_dir+"reversedMonkey.jpg"); ! // rgb8_image imgWithMargin; ! // create_with_margin(view(img), 100, imgWithMargin); ! // save_view(view(imgWithMargin),in_dir+"monkeyWithMargin.jpg"); ! test_image_views(subsampled_view(view(img),point_type(1,2)),"subsampled_"); ! BOOST_STATIC_ASSERT((!std::iterator_traits<COLOR_CONVERT_ITERATOR(rgb8_view::x_iterator,gray8_pixel) >::pixel_data_is_real)); ! test_image_views(color_convert_view<gray8_pixel>(view(img)),"color_converted_"); } *************** *** 281,313 **** typedef typename parent_type::reference reference; typedef typename parent_type::difference_type difference_type; ! typedef C color_space_type; ! myIterator() : _x(0),_y(0){} ! myIterator(int x, int y) : _x(x), _y(y) {} ! template <typename T1,typename C1> myIterator(const myIterator<T1,C1>& ptr) : _x(ptr._x), _y(ptr._y) {} ! /// For some reason operator[] provided by boost::iterator_facade returns a custom class that is convertible to reference ! /// We require our own reference because it is registered in iterator_traits ! reference operator[](difference_type d) const { return dereference(d);} ! ! myIterator(const myIterator& ptr) : parent_type(ptr) {} ! myIterator& operator=(const myIterator& ptr) { this->_x=ptr._x; this->_y=ptr._y; return *this; } ! reference dereference(int dx=0) const { ! return reference(_x+dx+_y); ! } private: ! friend class boost::iterator_core_access; ! int _x,_y; ! void increment() { ++_x; } ! void decrement() { --_x; } ! void advance(ptrdiff_t d) { _x+=d; } ! ptrdiff_t distance_to(const myIterator& it) const { return it._x-_x; } // THIS IS WRONG! ! bool equal(const myIterator& it) const { return _x==p._x && _y==p._y; } }; --- 281,313 ---- typedef typename parent_type::reference reference; typedef typename parent_type::difference_type difference_type; ! typedef C color_space_type; ! myIterator() : _x(0),_y(0){} ! myIterator(int x, int y) : _x(x), _y(y) {} ! template <typename T1,typename C1> myIterator(const myIterator<T1,C1>& ptr) : _x(ptr._x), _y(ptr._y) {} ! /// For some reason operator[] provided by boost::iterator_facade returns a custom class that is convertible to reference ! /// We require our own reference because it is registered in iterator_traits ! reference operator[](difference_type d) const { return dereference(d);} ! ! myIterator(const myIterator& ptr) : parent_type(ptr) {} ! myIterator& operator=(const myIterator& ptr) { this->_x=ptr._x; this->_y=ptr._y; return *this; } ! reference dereference(int dx=0) const { ! return reference(_x+dx+_y); ! } private: ! friend class boost::iterator_core_access; ! int _x,_y; ! void increment() { ++_x; } ! void decrement() { --_x; } ! void advance(ptrdiff_t d) { _x+=d; } ! ptrdiff_t distance_to(const myIterator& it) const { return it._x-_x; } // THIS IS WRONG! ! bool equal(const myIterator& it) const { return _x==p._x && _y==p._y; } }; *************** *** 316,373 **** class myXYLocator { public: ! typedef X_IT x_iterator; ! typedef pixel_step_iterator<X_IT> y_iterator; ! typedef typename std::iterator_traits<X_IT>::value_type value_type; ! typedef typename std::iterator_traits<X_IT>::reference reference; ! typedef typename std::iterator_traits<X_IT>::pointer pointer; ! typedef point2<typename std::iterator_traits<X_IT>::difference_type> difference_type; ! typedef ptrdiff_t cached_location; ! typedef myXYLocator<typename std::iterator_traits<X_IT>::dynamic_step_type> dynamic_step_type; ! typedef myXYLocator<typename std::iterator_traits<X_IT>::const_type> const_type; ! typedef typename std::iterator_traits<x_iterator>::channel_type channel_type; ! typedef typename std::iterator_traits<x_iterator>::color_space_type color_space_type; ! myXYLocator(){} ! myXYLocator(x_iterator x_it, ptrdiff_t row_bytes) : _p(x_it,row_bytes) {} ! template <typename X> myXYLocator(const myXYLocator<X>& pl) : _p(pl._p) {} ! x_iterator& x() { return _p.base(); } ! x_iterator const& x() const { return _p.base(); } ! y_iterator& y() { return _p; } ! y_iterator const& y() const { return _p; } ! ptrdiff_t row_bytes() const { return byte_step(y()); } // row bytes ! ptrdiff_t pix_bytestep() const { return byte_step(x()); } // distance in bytes between adjacent pixels on the same row ! reference operator()(ptrdiff_t dx, ptrdiff_t dy) const { return byte_advanced_ref(x(),byte_offset(dx,dy)); } ! reference operator[](const difference_type& d) const { return byte_advanced_ref(x(),byte_offset(d.x,d.y)); } ! reference operator*() const { return *_p; } ! cached_location cache_location(const difference_type& d) const { return byte_offset(d.x,d.y); } ! cached_location cache_location(ptrdiff_t dx, ptrdiff_t dy) const { return byte_offset(dx,dy); } ! ! reference operator[](const cached_location& loc) const { return byte_advanced_ref(x(),loc); } ! x_iterator x_at(ptrdiff_t dx, ptrdiff_t dy) const { return byte_advanced(x(), byte_offset(dx,dy)); } ! x_iterator x_at(const difference_type& d) const { return byte_advanced(x(), byte_offset(d.x,d.y)); } ! x_iterator row_begin(ptrdiff_t y) const { return byte_advanced(x(), y*row_bytes()); } ! myXYLocator& operator+=(const difference_type& d) { byte_advance(x(),byte_offset(d.x,d.y)); return *this; } ! myXYLocator& operator-=(const difference_type& d) { byte_advance(x(),byte_offset(-d.x,-d.y)); return *this; } ! // add is faster than += because there is no need to construct a point ! myXYLocator& add(ptrdiff_t dx, ptrdiff_t dy) { byte_advance(x(),byte_offset(dx,dy)); return *this; } ! ! myXYLocator operator+(const difference_type& d) const { return myXYLocator(x_at( d.x, d.y), row_bytes()); } ! myXYLocator operator-(const difference_type& d) const { return myXYLocator(x_at(-d.x,-d.y), row_bytes()); } ! bool operator==(const myXYLocator& p) const { return _p==p._p; } ! bool operator!=(const myXYLocator& p) const { return _p!=p._p; } private: ! template <typename X> friend class myXYLocator; ! ptrdiff_t byte_offset(ptrdiff_t x, ptrdiff_t y) const { return y*row_bytes() + x*pix_bytestep(); } ! pixel_step_iterator<X_IT> _p; }; */ --- 316,373 ---- class myXYLocator { public: ! typedef X_IT x... [truncated message content] |
From: Foster B. <fos...@us...> - 2006-02-03 18:20:59
|
Update of /cvsroot/adobe-source/adobe-source/ide_projects/darwin/asl_dev.xcodeproj In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1031/ide_projects/darwin/asl_dev.xcodeproj Modified Files: project.pbxproj Log Message: asl 1.0.13 Index: project.pbxproj =================================================================== RCS file: /cvsroot/adobe-source/adobe-source/ide_projects/darwin/asl_dev.xcodeproj/project.pbxproj,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** project.pbxproj 6 Jan 2006 18:35:27 -0000 1.1 --- project.pbxproj 3 Feb 2006 18:20:49 -0000 1.2 *************** *** 42,45 **** --- 42,51 ---- CEC069EB0948A52200AFC610 /* libboost_signals.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CEC069DF0948A50F00AFC610 /* libboost_signals.a */; }; CEC069EC0948A52200AFC610 /* libboost_threads.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CEC069E30948A50F00AFC610 /* libboost_threads.a */; }; + CEE3EC3909855FAD0006417C /* modal_dialog_interface.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CEE3EC3809855FAD0006417C /* modal_dialog_interface.cpp */; }; + CEE3EC4F0985B1B10006417C /* iomanip_asl_cel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CEE3EC4C0985B1B10006417C /* iomanip_asl_cel.cpp */; }; + CEE3EC500985B1B10006417C /* iomanip.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CEE3EC4D0985B1B10006417C /* iomanip.cpp */; }; + CEE3EC510985B1B10006417C /* iomanip_pdf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CEE3EC4E0985B1B10006417C /* iomanip_pdf.cpp */; }; + E5934CDB097C2435009079A9 /* basic_sheet.hpp in Headers */ = {isa = PBXBuildFile; fileRef = E5934CDA097C2435009079A9 /* basic_sheet.hpp */; }; + E59413DF097CA523009159B4 /* basic_sheet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E59413DE097CA523009159B4 /* basic_sheet.cpp */; }; /* End PBXBuildFile section */ *************** *** 64,68 **** containerPortal = CEC069CF0948A50F00AFC610 /* boost_filesystem.xcodeproj */; proxyType = 2; ! remoteGlobalIDString = D2AAC046055464E500DB518D /* libboost_filesystem.a */; remoteInfo = boost_filesystem; }; --- 70,74 ---- containerPortal = CEC069CF0948A50F00AFC610 /* boost_filesystem.xcodeproj */; proxyType = 2; ! remoteGlobalIDString = D2AAC046055464E500DB518D; remoteInfo = boost_filesystem; }; *************** *** 71,75 **** containerPortal = CEC069D20948A50F00AFC610 /* boost_signals.xcodeproj */; proxyType = 2; ! remoteGlobalIDString = D2AAC046055464E500DB518D /* libboost_signals.a */; remoteInfo = boost_signals; }; --- 77,81 ---- containerPortal = CEC069D20948A50F00AFC610 /* boost_signals.xcodeproj */; proxyType = 2; ! remoteGlobalIDString = D2AAC046055464E500DB518D; remoteInfo = boost_signals; }; *************** *** 78,82 **** containerPortal = CEC069D50948A50F00AFC610 /* boost_threads.xcodeproj */; proxyType = 2; ! remoteGlobalIDString = D2AAC046055464E500DB518D /* libboost_threads.a */; remoteInfo = boost_threads; }; --- 84,88 ---- containerPortal = CEC069D50948A50F00AFC610 /* boost_threads.xcodeproj */; proxyType = 2; ! remoteGlobalIDString = D2AAC046055464E500DB518D; remoteInfo = boost_threads; }; *************** *** 85,89 **** containerPortal = CEC069D20948A50F00AFC610 /* boost_signals.xcodeproj */; proxyType = 1; ! remoteGlobalIDString = D2AAC045055464E500DB518D /* boost_signals */; remoteInfo = boost_signals; }; --- 91,95 ---- containerPortal = CEC069D20948A50F00AFC610 /* boost_signals.xcodeproj */; proxyType = 1; ! remoteGlobalIDString = D2AAC045055464E500DB518D; remoteInfo = boost_signals; }; *************** *** 92,96 **** containerPortal = CEC069D50948A50F00AFC610 /* boost_threads.xcodeproj */; proxyType = 1; ! remoteGlobalIDString = D2AAC045055464E500DB518D /* boost_threads */; remoteInfo = boost_threads; }; --- 98,102 ---- containerPortal = CEC069D50948A50F00AFC610 /* boost_threads.xcodeproj */; proxyType = 1; ! remoteGlobalIDString = D2AAC045055464E500DB518D; remoteInfo = boost_threads; }; *************** *** 99,103 **** containerPortal = CEC069CF0948A50F00AFC610 /* boost_filesystem.xcodeproj */; proxyType = 1; ! remoteGlobalIDString = D2AAC045055464E500DB518D /* boost_filesystem */; remoteInfo = boost_filesystem; }; --- 105,109 ---- containerPortal = CEC069CF0948A50F00AFC610 /* boost_filesystem.xcodeproj */; proxyType = 1; ! remoteGlobalIDString = D2AAC045055464E500DB518D; remoteInfo = boost_filesystem; }; *************** *** 142,146 **** --- 148,158 ---- CEC069D20948A50F00AFC610 /* boost_signals.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = boost_signals.xcodeproj; sourceTree = "<group>"; }; CEC069D50948A50F00AFC610 /* boost_threads.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = boost_threads.xcodeproj; sourceTree = "<group>"; }; + CEE3EC3809855FAD0006417C /* modal_dialog_interface.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = modal_dialog_interface.cpp; path = ../../adobe/future/source/modal_dialog_interface.cpp; sourceTree = SOURCE_ROOT; }; + CEE3EC4C0985B1B10006417C /* iomanip_asl_cel.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = iomanip_asl_cel.cpp; path = ../../adobe/future/source/iomanip_asl_cel.cpp; sourceTree = SOURCE_ROOT; }; + CEE3EC4D0985B1B10006417C /* iomanip.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = iomanip.cpp; path = ../../adobe/future/source/iomanip.cpp; sourceTree = SOURCE_ROOT; }; + CEE3EC4E0985B1B10006417C /* iomanip_pdf.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = iomanip_pdf.cpp; path = ../../adobe/future/source/iomanip_pdf.cpp; sourceTree = SOURCE_ROOT; }; D2AAC046055464E500DB518D /* libasl_dev.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libasl_dev.a; sourceTree = BUILT_PRODUCTS_DIR; }; + E5934CDA097C2435009079A9 /* basic_sheet.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; name = basic_sheet.hpp; path = ../../adobe/basic_sheet.hpp; sourceTree = SOURCE_ROOT; }; + E59413DE097CA523009159B4 /* basic_sheet.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = basic_sheet.cpp; path = ../../adobe/source/basic_sheet.cpp; sourceTree = SOURCE_ROOT; }; /* End PBXFileReference section */ *************** *** 167,170 **** --- 179,183 ---- C6A0FF2B0290797F04C91782 /* Documentation */, 1AB674ADFE9D54B511CA2CBB /* Products */, + E59413DB097CA49B009159B4 /* headers */, ); name = boost_signals; *************** *** 174,181 **** --- 187,199 ---- isa = PBXGroup; children = ( + CEE3EC4C0985B1B10006417C /* iomanip_asl_cel.cpp */, + CEE3EC4D0985B1B10006417C /* iomanip.cpp */, + CEE3EC4E0985B1B10006417C /* iomanip_pdf.cpp */, + CEE3EC3809855FAD0006417C /* modal_dialog_interface.cpp */, CE5C20D609479C0200EB4BB6 /* adam_evaluate.cpp */, CE5C20D709479C0200EB4BB6 /* adam_parser.cpp */, CE5C20D809479C0200EB4BB6 /* adam.cpp */, CE5C20D909479C0200EB4BB6 /* array.cpp */, + E59413DE097CA523009159B4 /* basic_sheet.cpp */, CE5C20DA09479C0200EB4BB6 /* dictionary.cpp */, CE5C20DB09479C0200EB4BB6 /* eve_evaluate.cpp */, *************** *** 268,271 **** --- 286,297 ---- sourceTree = "<group>"; }; + E59413DB097CA49B009159B4 /* headers */ = { + isa = PBXGroup; + children = ( + E5934CDA097C2435009079A9 /* basic_sheet.hpp */, + ); + name = headers; + sourceTree = "<group>"; + }; /* End PBXGroup section */ *************** *** 275,278 **** --- 301,305 ---- buildActionMask = 2147483647; files = ( + E5934CDB097C2435009079A9 /* basic_sheet.hpp in Headers */, ); runOnlyForDeploymentPostprocessing = 0; *************** *** 398,401 **** --- 425,433 ---- CE5C211209479C0200EB4BB6 /* zuid_uuid.cpp in Sources */, CE5C211309479C0200EB4BB6 /* zuid.cpp in Sources */, + E59413DF097CA523009159B4 /* basic_sheet.cpp in Sources */, + CEE3EC3909855FAD0006417C /* modal_dialog_interface.cpp in Sources */, + CEE3EC4F0985B1B10006417C /* iomanip_asl_cel.cpp in Sources */, + CEE3EC500985B1B10006417C /* iomanip.cpp in Sources */, + CEE3EC510985B1B10006417C /* iomanip_pdf.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; |
From: Foster B. <fos...@us...> - 2006-02-03 18:20:59
|
Update of /cvsroot/adobe-source/adobe-source/adobe/test/sudoku In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1031/adobe/test/sudoku Modified Files: main.cpp sudoku.hpp sudoku_utilities.hpp sudokus.txt Log Message: asl 1.0.13 Index: sudoku_utilities.hpp =================================================================== RCS file: /cvsroot/adobe-source/adobe-source/adobe/test/sudoku/sudoku_utilities.hpp,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** sudoku_utilities.hpp 6 Jan 2006 18:35:26 -0000 1.2 --- sudoku_utilities.hpp 3 Feb 2006 18:20:49 -0000 1.3 *************** *** 1,6 **** /* ! 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) */ --- 1,6 ---- /* ! Copyright 2005-2006 Adobe Systems Incorporated ! Distributed under the MIT License (see accompanying file LICENSE_1_0_0.txt [...2703 lines suppressed...] ! timer.accrue(); #if 1 ! double last_split(timer.last_split()); ! std::cout << "Solved a puzzle with " << num_solutions << " solution(s) in " ! << last_split << " miliseconds (" << (last_split / 1e3) << " seconds)" ! << std::endl; #endif ! } ! double total_time(timer.accrued_total()); ! double avg_time(timer.accrued_average()); ! std::cout << "Solved all puzzles in " << total_time << " miliseconds (" ! << (total_time / 1e3) << " seconds)" << std::endl ! << "Average puzzle solve time " << avg_time << " miliseconds (" ! << (avg_time / 1e3) << " seconds)" << std::endl; } Index: main.cpp =================================================================== RCS file: /cvsroot/adobe-source/adobe-source/adobe/test/sudoku/main.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** main.cpp 6 Jan 2006 18:35:26 -0000 1.2 --- main.cpp 3 Feb 2006 18:20:49 -0000 1.3 *************** *** 1,6 **** /* ! 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) */ --- 1,6 ---- /* ! 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) */ *************** *** 37,83 **** class application_t { ! typedef std::vector<sudoku::sudoku_t> sudoku_set_t; ! typedef std::size_t (*solver_proc_t)(sudoku::sudoku_t&); public: ! enum ! { ! setting_detailed_printout_k = 0, ! setting_use_lone_candidate_k, ! setting_use_unique_candidate_k, ! setting_use_disjoint_subset_k, ! setting_use_unique_subset_k, ! setting_use_intersection_k, ! setting_set_size ! }; ! explicit application_t(bfs::path prefs_path) : ! prefs_path_m(prefs_path) ! { ! for (std::size_t i(0); i < setting_set_size; ++i) ! solver_usage_m[i] = true; ! solver_usage_m[setting_detailed_printout_k] = false; ! } ! void run(); private: ! void import_preferences(); ! void menu(); ! void solve_puzzle(); ! std::size_t deductive_step(solver_proc_t proc); ! void modify_settings(); ! void pick_new_puzzle(); ! bfs::path prefs_path_m; ! sudoku_set_t sudoku_set_m; ! sudoku::sudoku_t puzzle_m; ! boost::array<bool, setting_set_size> solver_usage_m; }; --- 37,83 ---- class application_t { ! typedef std::vector<sudoku::sudoku_t> sudoku_set_t; ! typedef std::size_t (*solver_proc_t)(sudoku::sudoku_t&); public: ! enum ! { ! setting_detailed_printout_k = 0, ! setting_use_lone_candidate_k, ! setting_use_unique_candidate_k, ! setting_use_disjoint_subset_k, ! setting_use_unique_subset_k, ! setting_use_intersection_k, ! setting_set_size ! }; ! explicit application_t(bfs::path prefs_path) : ! prefs_path_m(prefs_path) ! { ! for (std::size_t i(0); i < setting_set_size; ++i) ! solver_usage_m[i] = true; ! solver_usage_m[setting_detailed_printout_k] = false; ! } ! void run(); private: ! void import_preferences(); ! void menu(); ! void solve_puzzle(); ! std::size_t deductive_step(solver_proc_t proc); ! void modify_settings(); ! void pick_new_puzzle(); ! bfs::path prefs_path_m; ! sudoku_set_t sudoku_set_m; ! sudoku::sudoku_t puzzle_m; ! boost::array<bool, setting_set_size> solver_usage_m; }; *************** *** 86,137 **** void application_t::import_preferences() { ! char buffer[1024]; ! bfs::ifstream input(prefs_path_m, std::ios_base::in | std::ios_base::binary); ! if (input.fail()) ! { ! std::cerr << "Could not open preferences file." << std::endl; ! puzzle_m = sudoku::generate_puzzle(); ! return; ! } ! input.unsetf(std::ios_base::skipws); ! while (!input.eof()) ! { ! sudoku::sudoku_t cur; ! int count(0); ! input.getline(&buffer[0], 1024); ! std::size_t readsize(static_cast<std::size_t>(input.gcount())); ! if (readsize < 81) continue; ! while (true) ! { ! char c(buffer[count]); ! if (c == '\t') break; ! if (c == '.' || c >= '1' && c <= '9') ! { ! if (c != '.') ! cur.square(count / 9, count % 9).value_m = c - '0'; ! ++count; ! } ! } ! if (readsize <= 81) break; ! ++count; // to get past the tab between the name and the ! cur.name_m = std::string(&buffer[count], &buffer[readsize]); ! sudoku_set_m.push_back(cur); ! } } --- 86,137 ---- void application_t::import_preferences() { ! char buffer[1024]; ! bfs::ifstream input(prefs_path_m, std::ios_base::in | std::ios_base::binary); ! if (input.fail()) ! { ! std::cerr << "Could not open preferences file." << std::endl; ! puzzle_m = sudoku::generate_puzzle(); ! return; ! } ! input.unsetf(std::ios_base::skipws); ! while (!input.eof()) ! { ! sudoku::sudoku_t cur; ! int count(0); ! input.getline(&buffer[0], 1024); ! std::size_t readsize(static_cast<std::size_t>(input.gcount())); ! if (readsize < 81) continue; ! while (true) ! { ! char c(buffer[count]); ! if (c == '\t') break; ! if (c == '.' || c >= '1' && c <= '9') ! { ! if (c != '.') ! cur.square(count / 9, count % 9).value_m = c - '0'; ! ++count; ! } ! } ! if (readsize <= 81) break; ! ++count; // to get past the tab between the name and the ! cur.name_m = std::string(&buffer[count], &buffer[readsize]); ! sudoku_set_m.push_back(cur); ! } } *************** *** 140,153 **** const char* solver_enum_to_string(int solver_enum) { ! switch (solver_enum) ! { ! case application_t::setting_detailed_printout_k: return "Iterative Puzzle Printout"; ! case application_t::setting_use_lone_candidate_k: return "Lone Candidate Selection"; ! case application_t::setting_use_unique_candidate_k: return "Unique Candidate Selection"; ! case application_t::setting_use_disjoint_subset_k: return "Disjoint Subset Reduction"; ! case application_t::setting_use_unique_subset_k: return "Unique Subset Reduction"; ! case application_t::setting_use_intersection_k: return "Box/Row/Col Intersection Reduction"; ! default: return "Unknown Setting"; ! }; } --- 140,153 ---- const char* solver_enum_to_string(int solver_enum) { ! switch (solver_enum) ! { ! case application_t::setting_detailed_printout_k: return "Iterative Puzzle Printout"; ! case application_t::setting_use_lone_candidate_k: return "Lone Candidate Selection"; ! case application_t::setting_use_unique_candidate_k: return "Unique Candidate Selection"; ! case application_t::setting_use_disjoint_subset_k: return "Disjoint Subset Reduction"; ! case application_t::setting_use_unique_subset_k: return "Unique Subset Reduction"; ! case application_t::setting_use_intersection_k: return "Box/Row/Col Intersection Reduction"; ! default: return "Unknown Setting"; ! }; } *************** *** 156,180 **** void application_t::modify_settings() { ! while (true) ! { ! std::cout << "=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=" << std::endl; ! std::cout << "Please toggle settings" << std::endl; ! for (int count(0); count < setting_set_size; ++count) ! std::cout << count+1 << ". Use " << solver_enum_to_string(count) << ": " ! << (solver_usage_m[count] ? "On" : "Off") << std::endl; ! std::cout << std::endl; ! std::cout << "(0 to exit) ?> "; ! std::size_t choice; ! std::cin >> choice; ! if (choice <= 0 || choice > setting_set_size) ! break; ! else ! solver_usage_m[choice - 1] = !solver_usage_m[choice - 1]; ! } } --- 156,180 ---- void application_t::modify_settings() { ! while (true) ! { ! std::cout << "=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=" << std::endl; ! std::cout << "Please toggle settings" << std::endl; ! for (int count(0); count < setting_set_size; ++count) ! std::cout << count+1 << ". Use " << solver_enum_to_string(count) << ": " ! << (solver_usage_m[count] ? "On" : "Off") << std::endl; ! std::cout << std::endl; ! std::cout << "(0 to exit) ?> "; ! std::size_t choice; ! std::cin >> choice; ! if (choice <= 0 || choice > setting_set_size) ! break; ! else ! solver_usage_m[choice - 1] = !solver_usage_m[choice - 1]; ! } } *************** *** 183,207 **** void application_t::pick_new_puzzle() { ! std::cout << "=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=" << std::endl; ! std::cout << "Please pick a new puzzle" << std::endl; ! std::size_t count(0); ! for (sudoku_set_t::iterator first(sudoku_set_m.begin()), ! last(sudoku_set_m.end()); first != last; ++first) ! { ! std::cout << " " << ++count << ". " << first->name_m << std::endl; ! } ! std::cout << std::endl; ! std::cout << "?> "; ! std::size_t choice; ! std::cin >> choice; ! if (choice <= 0 || choice > sudoku_set_m.size()) ! std::cerr << "Choice is not viable. Aborting." << std::endl; ! else ! puzzle_m = sudoku_set_m[choice - 1]; } --- 183,207 ---- void application_t::pick_new_puzzle() { ! std::cout << "=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=" << std::endl; ! std::cout << "Please pick a new puzzle" << std::endl; ! std::size_t count(0); ! for (sudoku_set_t::iterator first(sudoku_set_m.begin()), ! last(sudoku_set_m.end()); first != last; ++first) ! { ! std::cout << " " << ++count << ". " << first->name_m << std::endl; ! } ! std::cout << std::endl; ! std::cout << "?> "; ! std::size_t choice; ! std::cin >> choice; ! if (choice <= 0 || choice > sudoku_set_m.size()) ! std::cerr << "Choice is not viable. Aborting." << std::endl; ! else ! puzzle_m = sudoku_set_m[choice - 1]; } *************** *** 210,224 **** std::size_t application_t::deductive_step(solver_proc_t proc) { ! std::size_t usages(proc(puzzle_m)); ! if (usages != 0) ! { ! sudoku::pinned_reduction(puzzle_m); ! if (!verify_integrity(puzzle_m)) ! throw std::runtime_error("Puzzle integrity check failed"); ! } ! return usages; } --- 210,224 ---- std::size_t application_t::deductive_step(solver_proc_t proc) { ! std::size_t usages(proc(puzzle_m)); ! if (usages != 0) ! { ! sudoku::pinned_reduction(puzzle_m); ! if (!verify_integrity(puzzle_m)) ! throw std::runtime_error("Puzzle integrity check failed"); ! } ! return usages; } *************** *** 227,276 **** void application_t::solve_puzzle() { ! // do a pinned reduction first before we start on the puzzle ! // to make sure the possibility sets are legit to begin with ! sudoku::pinned_reduction(puzzle_m); ! while (true) ! { ! std::size_t usages(0); ! try ! { ! if (solver_usage_m[setting_use_lone_candidate_k]) ! usages += deductive_step(sudoku::lone_candidate_reduction); ! if (solver_usage_m[setting_use_unique_candidate_k]) ! usages += deductive_step(sudoku::unique_candidate_reduction); ! if (solver_usage_m[setting_use_disjoint_subset_k]) ! usages += deductive_step(sudoku::disjoint_subset_reduction); ! if (solver_usage_m[setting_use_unique_subset_k]) ! usages += deductive_step(sudoku::unique_subset_reduction); ! if (solver_usage_m[setting_use_intersection_k]) ! usages += deductive_step(sudoku::intersection_reduction); ! } ! catch (const std::exception& doh) ! { ! std::cerr << "Exception: " << doh.what() << std::endl; ! break; ! } ! catch (...) ! { ! std::cerr << "Exception: Unknown" << std::endl; ! break; ! } ! if (usages == 0) ! break; ! else if (solver_usage_m[setting_detailed_printout_k]) ! detailed_status(puzzle_m); ! } ! std::cout << "No more squares can be solved" << std::endl; ! std::cout << puzzle_m; } --- 227,276 ---- void application_t::solve_puzzle() { ! // do a pinned reduction first before we start on the puzzle ! // to make sure the possibility sets are legit to begin with ! sudoku::pinned_reduction(puzzle_m); ! while (true) ! { ! std::size_t usages(0); ! try ! { ! if (solver_usage_m[setting_use_lone_candidate_k]) ! usages += deductive_step(sudoku::lone_candidate_reduction); ! if (solver_usage_m[setting_use_unique_candidate_k]) ! usages += deductive_step(sudoku::unique_candidate_reduction); ! if (solver_usage_m[setting_use_disjoint_subset_k]) ! usages += deductive_step(sudoku::disjoint_subset_reduction); ! if (solver_usage_m[setting_use_unique_subset_k]) ! usages += deductive_step(sudoku::unique_subset_reduction); ! if (solver_usage_m[setting_use_intersection_k]) ! usages += deductive_step(sudoku::intersection_reduction); ! } ! catch (const std::exception& doh) ! { ! std::cerr << "Exception: " << doh.what() << std::endl; ! break; ! } ! catch (...) ! { ! std::cerr << "Exception: Unknown" << std::endl; ! break; ! } ! if (usages == 0) ! break; ! else if (solver_usage_m[setting_detailed_printout_k]) ! detailed_status(puzzle_m); ! } ! std::cout << "No more squares can be solved" << std::endl; ! std::cout << puzzle_m; } *************** *** 279,381 **** void application_t::menu() { ! while (true) ! { ! std::cout << std::endl; ! std::cout << "=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=" << std::endl; ! std::cout << "Adobe Sudoku Test App " << ADOBE_VERSION_MAJOR << '.' << ADOBE_VERSION_MINOR ! << '.' << ADOBE_VERSION_SUBMINOR << std::endl; ! std::cout << "=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=" << std::endl; ! std::cout << sudoku_set_m.size() << " puzzles loaded. \""; ! std::cout << puzzle_m.name_m << "\" is the current puzzle" << std::endl; ! std::cout << " 1. Solve current puzzle" << std::endl; ! std::cout << " 2. Change solver techniques used" << std::endl; ! std::cout << " 3. Print current puzzle (simple)" << std::endl; ! std::cout << " 4. Print current puzzle (detailed)" << std::endl; ! std::cout << " 5. Switch to another puzzle" << std::endl; ! std::cout << " 6. Import a new puzzle (unimp.)" << std::endl; ! std::cout << " 7. Save puzzle database (unimp.)" << std::endl; ! std::cout << " 8. Generate random puzzle" << std::endl; ! std::cout << " 9. Brute-force solve current puzzle" << std::endl; ! std::cout << " R. Rate current puzzle" << std::endl; ! std::cout << " M. Mass puzzle generation" << std::endl; ! std::cout << " C. Count number of solutions to current puzzle" << std::endl; ! std::cout << " P. Dancing links performance benchmarking" << std::endl; ! std::cout << std::endl; ! std::cout << " Q. Quit" << std::endl; ! std::cout << std::endl; ! std::cout << "?> "; ! char choice(0); ! std::cin >> choice; ! std::cout << "=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=" << std::endl; ! std::cout << std::endl; ! switch (choice) ! { ! case '1': ! solve_puzzle(); ! break; ! case '2': ! modify_settings(); ! break; ! case '3': ! std::cout << puzzle_m; ! break; ! case '4': ! sudoku::pinned_reduction(puzzle_m); ! sudoku::detailed_status(puzzle_m); ! break; ! case '5': ! pick_new_puzzle(); ! break; ! case '6': ! case '7': ! std::cout << "not implemented yet, sorry." << std::endl; ! break; ! case '8': ! puzzle_m = sudoku::generate_puzzle(); ! break; ! case '9': ! sudoku::timed_solve(puzzle_m); ! break; ! case 'R': ! case 'r': ! sudoku::rate_puzzle(puzzle_m); ! break; ! case 'M': ! case 'm': ! sudoku::mass_puzzle_generation(); ! break; ! case 'C': ! case 'c': ! sudoku::count_solutions(puzzle_m); ! break; ! case 'P': ! case 'p': ! sudoku::performance_benchmark(); ! break; ! case 'Q': ! case 'q': ! return; ! default: ! std::cerr << "Invalid choice. Please choose again." << std::endl; ! break; ! } ! } } --- 279,381 ---- void application_t::menu() { ! while (true) ! { ! std::cout << std::endl; ! std::cout << "=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=" << std::endl; ! std::cout << "Adobe Sudoku Test App " << ADOBE_VERSION_MAJOR << '.' << ADOBE_VERSION_MINOR ! << '.' << ADOBE_VERSION_SUBMINOR << std::endl; ! std::cout << "=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=" << std::endl; ! std::cout << sudoku_set_m.size() << " puzzles loaded. \""; ! std::cout << puzzle_m.name_m << "\" is the current puzzle" << std::endl; ! std::cout << " 1. Solve current puzzle" << std::endl; ! std::cout << " 2. Change solver techniques used" << std::endl; ! std::cout << " 3. Print current puzzle (simple)" << std::endl; ! std::cout << " 4. Print current puzzle (detailed)" << std::endl; ! std::cout << " 5. Switch to another puzzle" << std::endl; ! std::cout << " 6. Import a new puzzle (unimp.)" << std::endl; ! std::cout << " 7. Save puzzle database (unimp.)" << std::endl; ! std::cout << " 8. Generate random puzzle" << std::endl; ! std::cout << " 9. Brute-force solve current puzzle" << std::endl; ! std::cout << " R. Rate current puzzle" << std::endl; ! std::cout << " M. Mass puzzle generation" << std::endl; ! std::cout << " C. Count number of solutions to current puzzle" << std::endl; ! std::cout << " P. Dancing links performance benchmarking" << std::endl; ! std::cout << std::endl; ! std::cout << " Q. Quit" << std::endl; ! std::cout << std::endl; ! std::cout << "?> "; ! char choice(0); ! std::cin >> choice; ! std::cout << "=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=" << std::endl; ! std::cout << std::endl; ! switch (choice) ! { ! case '1': ! solve_puzzle(); ! break; ! case '2': ! modify_settings(); ! break; ! case '3': ! std::cout << puzzle_m; ! break; ! case '4': ! sudoku::pinned_reduction(puzzle_m); ! sudoku::detailed_status(puzzle_m); ! break; ! case '5': ! pick_new_puzzle(); ! break; ! case '6': ! case '7': ! std::cout << "not implemented yet, sorry." << std::endl; ! break; ! case '8': ! puzzle_m = sudoku::generate_puzzle(); ! break; ! case '9': ! sudoku::timed_solve(puzzle_m); ! break; ! case 'R': ! case 'r': ! sudoku::rate_puzzle(puzzle_m); ! break; ! case 'M': ! case 'm': ! sudoku::mass_puzzle_generation(); ! break; ! case 'C': ! case 'c': ! sudoku::count_solutions(puzzle_m); ! break; ! case 'P': ! case 'p': ! sudoku::performance_benchmark(); ! break; ! case 'Q': ! case 'q': ! return; ! default: ! std::cerr << "Invalid choice. Please choose again." << std::endl; ! break; ! } ! } } *************** *** 384,392 **** void application_t::run() { ! import_preferences(); ! if (!sudoku_set_m.empty()) puzzle_m = sudoku_set_m[0]; ! menu(); } --- 384,392 ---- void application_t::run() { ! import_preferences(); ! if (!sudoku_set_m.empty()) puzzle_m = sudoku_set_m[0]; ! menu(); } *************** *** 399,414 **** int main(int argc, char** argv) { ! std::srand(std::time(0)); ! std::string db_name("sudokus.txt"); ! if (argc > 1) db_name.assign(argv[1]); ! bfs::path filepath(db_name.c_str(), argc > 1 ? bfs::native : bfs::portable_name); ! { ! application_t(filepath).run(); ! } ! return 0; } --- 399,414 ---- int main(int argc, char** argv) { ! std::srand(std::time(0)); ! std::string db_name("sudokus.txt"); ! if (argc > 1) db_name.assign(argv[1]); ! bfs::path filepath(db_name.c_str(), argc > 1 ? bfs::native : bfs::portable_name); ! { ! application_t(filepath).run(); ! } ! return 0; } Index: sudoku.hpp =================================================================== RCS file: /cvsroot/adobe-source/adobe-source/adobe/test/sudoku/sudoku.hpp,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** sudoku.hpp 6 Jan 2006 18:35:26 -0000 1.3 --- sudoku.hpp 3 Feb 2006 18:20:49 -0000 1.4 *************** *** 1,6 **** /* ! 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/config.hpp> --- 1,6 ---- /* ! Copyright 2005-2006 Adobe Systems Incorporated ! Distributed under the MIT License (see accompanying file LICENSE_1_0_0.txt [...1003 lines suppressed...] ! ++col_count; ! if (col_count % 9 == 0) ! { ! ++row_count; ! if (row_count == 3 || row_count == 6) ! s << std::endl << hr; ! s << std::endl; ! } ! else if (col_count % 3 == 0) ! s << " | "; ! else ! s << ' '; ! } ! return s; } Index: sudokus.txt =================================================================== RCS file: /cvsroot/adobe-source/adobe-source/adobe/test/sudoku/sudokus.txt,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** sudokus.txt 6 Oct 2005 20:43:19 -0000 1.1 --- sudokus.txt 3 Feb 2006 18:20:49 -0000 1.2 *************** *** 1,54 **** ! .2.6..9.7..1...5.....3..68...7.9...8.4.....5.9...7.1...56..1.....2...3..1.8..7.9. beyond wicked puzzle (652) ! ...91....7..5...1..8...4...5...4.18....7.8....46.5...3...8...7..3...6..4....32... hard puzzle (372) ! .3..1.6.......549..4.2....5213....7.57.....36.6....5413....8.6..287.......7.5..8. unbelievably wicked puzzle (971) ! .9.741.35...356.21....92..6....3..1...9...5...8..1....3..46....67.529...95.183.6. unbelievably wicked puzzle (931) ! ..5.1......7..961.3..6..2.71......82.........85......15.2..7..8.314..5......9.4.. unbelievably wicked puzzle (878) ! ...6.1.5....4..8.131.....62.7..6.....25...78.....1..9.63.....459.4..2....8.5.6... nearly diabolical puzzle (401) ! .5...8.72..4...6...1.9....57....381.4.......7.864....99....7.8...1...9..54.6...2. nearly difficult puzzle (258) ! .....6..5...9...879....3..6.3..425.845.3.8.618.976..2.3..6....227...9...1..4..... unbelievably wicked puzzle (931) ! .4.6.9.738...5.......1..2..6......4.2.8...9.5.7......2..9..6.......7...871.2.5.3. unbelievably wicked puzzle (758) ! ....3..5...69.2...3....46....7..5..9.61...34.8..2..7....35....1...6.82...8..9.... beyond diabolical puzzle (462) ! ..267845.4.5231..981.5.4...1.4..6..73.......67..4..9.5...3.9.786..8451.2.837126.. unbelievably wicked puzzle (976) ! ...5...9.7...4.1...5.3.926..71...524.8.2.3.7.692...38..471.5.3...3.9...5.1...7... unbelievably wicked puzzle (916) ! ..3...8.4....8.......7..291..7.3864..2.....5..8564.9..162..7.......9....5.9...1.. tricky puzzle (204) ! .51.3.6.48..6.42.5......397.6..2.8.1.........5.3.1..2.692......3.58.9..21.4.6.73. tricky puzzle (224) ! .....2.4..........48.61.9..34.....7296.....5881.....69..4.58.17..........3.9..... nearly wicked puzzle (485) ! ..6.42...7.36.9..2.4.5.3...3....8.69.........62.7....3...2.4.7.2..3.15.4...89.6.. unbelievably wicked puzzle (893) ! .2.......9.7....8..3.2.6.918.4.5..73.........17..6.2.835.8.9.1..1....8.5.......2. beyond tricky puzzle (240) ! ..9..6...1.58....386.93.4..6...1..7....2.4....3..9...1..3.25.465....91.2...6..9.. nearly difficult puzzle (269) ! ...1.2.....9.5.....2...4618.72...8..4986.5273..3...19.7518...3.....7.5.....5.1... unbelievably wicked puzzle (973) ! ...6....4...78..2.21..5.....45..7.8...6...3...2.1..75.....6..37.9..34...5....1... nearly hard puzzle (336) ! ........28..2..4...3..68..1218.9..3434.....7567..3.2989..14..2...1..9..67........ unbelievably wicked puzzle (972) ! ......96.9....34.15..1...7..9..2.8.78.......56.4.3..2..1...8..62.97....3.56...... unbelievably wicked puzzle (883) ! ......426...4....36...139.8.35.4.6.19.......58.2.5.34.2.369...44....7...187...... beyond tricky puzzle (229) ! .1.823......6..1..5....73....8.4..6..5.3.8.9..4..5.8....75....2..6..1......986.4. nearly diabolical puzzle (403) ! ..6.3.21...9..17...3.2.........62.8..4.....6..9.18.........7.3...34..5...71.5.8.. unbelievably wicked puzzle (888) ! .759.4.2.1..7...4.86..2...39......3.6.2...8.4.1......94...7..96.8...9..7.9.4.628. beyond tricky puzzle (236) ! .25.3.......1....747..98.3..8......1.........2......4..1.58..236....2.......4.98. nearly wicked puzzle (496) ! ......3.......6.15...2154.987..91.....6...1.....68..272.7458...31.7.......4...... beyond diabolical puzzle (452) ! .4.8...6.9..7..2...1.3.....1.6...78.48.....26.52...1.4.....6.3...9..7..8.2...1.5. diabolical puzzle (425) ! ....6...7..5..9..83..5..2......9..8.74.3.5.19.9..4......3..1..66..2..8..2...5.... nearly wicked puzzle (493) ! .5..9.2..8.45.3.6.9..............1...819.472...3..............7.3.4.78.9..9.6..3. diabolical puzzle (435) ! ..5..83.24.3..1..6.....4...9.4....3.86.....75.5....4.9...2.....5..4..8.32.75..9.. nearly diabolical puzzle (411) ! ..1..9.62..6.1397......84..237.....4.........6.....721..39......9463.2..56.1..3.. diabolical puzzle (448) ! ..7.9.2.......56.8...2...7..7....4....58.79....2....3..3...4...8.43.......1.2.7.. beyond wicked puzzle (545) ! ........9...4..37.1....8.5.....45.1.3..8.6..2.4.13.....3.2....4.65..1...8........ beyond wicked puzzle (573) ! ..4........85.9.346..18....9......5.37.....21.8......9....32..742.7.85........8.. nearly wicked puzzle (499) ! .....89..5.4.3...781..9.3.5....261...7.....9...294....1.9.5..723...6.5.9..58..... nearly wicked puzzle (496) ! .4..18..97..2...1....6.5....56.2..98.........89..7.13....3.2....1...7..56..49..2. diabolical puzzle (447) ! ..78....6...29.75.....6..8.......49....7.1....12.......4..3.....38.74...9....28.. nearly wicked puzzle (482) ! .5..27.4....5.....9...6...7.21..6.7.78.....93.4.8..16.1...5...4.....8....9.71..5. unbelievably wicked puzzle (542) ! .....2.1....49...5...8...29.7..6.2...18...65...3.2..7.63...1...5...74....2.3..... unbelievably wicked puzzle (628) ! .2....7..9.6..1...7..8....1.....86..45.1.6.28..79.....5....9..3...4..9.2..2....8. unbelievably wicked puzzle (735) ! .8..42.36....1..285.....14965..9.................5..73865.....434..2....19.68..5. unbelievably wicked puzzle (549) ! .3...2........93...2..5.7.6..8.4..2...1...9...6..7.5..7.2.1..5...68........5...8. unbelievably wicked puzzle (740) ! .......3...534...2...17...6.1..683..3..9.1..5..653..7.9...52...2...176...6....... unbelievably wicked puzzle (707) ! .6..5.38.....7........319.25.9....2...........2....6.78.241........2.....73.8..5. beyond wicked puzzle (624) ! .6...3.92.....81.....91.3..2.4....78.........89....2.5..8.34.....56.....91.8...6. wicked puzzle (518) ! ....61.5....97.......3..186....2.3...7.5.6.2...1.9....456..7.......35....3.14.... beyond wicked puzzle (528) ! .4.382.7.9.............1..38......9.4.69.73.8.1......26..4.............1.2.876.5. beyond wicked puzzle (712) ! .6......17..9..3.........2..74.2...69513.62473...4.18..3.........8..5..92......1. beyond wicked puzzle (723) ! ..9....5....5...6..3...2..93...8.....481.937.....2...64..7...1..5...3....8....7.. beyond wicked puzzle (610) ! 5.6.2.9.3..8...5...........6..285..9...9.3...8..761..4...........4...3..2.1.5.6.7 1,905 solutions ! 536.2.9....8...............6..285..9...9.3...8..761..4...........4......2.1.....7 957,263 solutions ! .94...13..............76..2.8..1.....32.........2.........5.4.......8..7..63.4..8 r1s7 has size 1 but all rc have size > 1 --- 1,54 ---- ! .2.6..9.7..1...5.....3..68...7.9...8.4.....5.9...7.1...56..1.....2...3..1.8..7.9. beyond wicked puzzle (652) ! ...91....7..5...1..8...4...5...4.18....7.8....46.5...3...8...7..3...6..4....32... hard puzzle (372) ! .3..1.6.......549..4.2....5213....7.57.....36.6....5413....8.6..287.......7.5..8. unbelievably wicked puzzle (971) ! .9.741.35...356.21....92..6....3..1...9...5...8..1....3..46....67.529...95.183.6. unbelievably wicked puzzle (931) ! ..5.1......7..961.3..6..2.71......82.........85......15.2..7..8.314..5......9.4.. unbelievably wicked puzzle (878) ! ...6.1.5....4..8.131.....62.7..6.....25...78.....1..9.63.....459.4..2....8.5.6... nearly diabolical puzzle (401) ! .5...8.72..4...6...1.9....57....381.4.......7.864....99....7.8...1...9..54.6...2. nearly difficult puzzle (258) ! .....6..5...9...879....3..6.3..425.845.3.8.618.976..2.3..6....227...9...1..4..... unbelievably wicked puzzle (931) ! .4.6.9.738...5.......1..2..6......4.2.8...9.5.7......2..9..6.......7...871.2.5.3. unbelievably wicked puzzle (758) ! ....3..5...69.2...3....46....7..5..9.61...34.8..2..7....35....1...6.82...8..9.... beyond diabolical puzzle (462) ! ..267845.4.5231..981.5.4...1.4..6..73.......67..4..9.5...3.9.786..8451.2.837126.. unbelievably wicked puzzle (976) ! ...5...9.7...4.1...5.3.926..71...524.8.2.3.7.692...38..471.5.3...3.9...5.1...7... unbelievably wicked puzzle (916) ! ..3...8.4....8.......7..291..7.3864..2.....5..8564.9..162..7.......9....5.9...1.. tricky puzzle (204) ! .51.3.6.48..6.42.5......397.6..2.8.1.........5.3.1..2.692......3.58.9..21.4.6.73. tricky puzzle (224) ! .....2.4..........48.61.9..34.....7296.....5881.....69..4.58.17..........3.9..... nearly wicked puzzle (485) ! ..6.42...7.36.9..2.4.5.3...3....8.69.........62.7....3...2.4.7.2..3.15.4...89.6.. unbelievably wicked puzzle (893) ! .2.......9.7....8..3.2.6.918.4.5..73.........17..6.2.835.8.9.1..1....8.5.......2. beyond tricky puzzle (240) ! ..9..6...1.58....386.93.4..6...1..7....2.4....3..9...1..3.25.465....91.2...6..9.. nearly difficult puzzle (269) ! ...1.2.....9.5.....2...4618.72...8..4986.5273..3...19.7518...3.....7.5.....5.1... unbelievably wicked puzzle (973) ! ...6....4...78..2.21..5.....45..7.8...6...3...2.1..75.....6..37.9..34...5....1... nearly hard puzzle (336) ! ........28..2..4...3..68..1218.9..3434.....7567..3.2989..14..2...1..9..67........ unbelievably wicked puzzle (972) ! ......96.9....34.15..1...7..9..2.8.78.......56.4.3..2..1...8..62.97....3.56...... unbelievably wicked puzzle (883) ! ......426...4....36...139.8.35.4.6.19.......58.2.5.34.2.369...44....7...187...... beyond tricky puzzle (229) ! .1.823......6..1..5....73....8.4..6..5.3.8.9..4..5.8....75....2..6..1......986.4. nearly diabolical puzzle (403) ! ..6.3.21...9..17...3.2.........62.8..4.....6..9.18.........7.3...34..5...71.5.8.. unbelievably wicked puzzle (888) ! .759.4.2.1..7...4.86..2...39......3.6.2...8.4.1......94...7..96.8...9..7.9.4.628. beyond tricky puzzle (236) ! .25.3.......1....747..98.3..8......1.........2......4..1.58..236....2.......4.98. nearly wicked puzzle (496) ! ......3.......6.15...2154.987..91.....6...1.....68..272.7458...31.7.......4...... beyond diabolical puzzle (452) ! .4.8...6.9..7..2...1.3.....1.6...78.48.....26.52...1.4.....6.3...9..7..8.2...1.5. diabolical puzzle (425) ! ....6...7..5..9..83..5..2......9..8.74.3.5.19.9..4......3..1..66..2..8..2...5.... nearly wicked puzzle (493) ! .5..9.2..8.45.3.6.9..............1...819.472...3..............7.3.4.78.9..9.6..3. diabolical puzzle (435) ! ..5..83.24.3..1..6.....4...9.4....3.86.....75.5....4.9...2.....5..4..8.32.75..9.. nearly diabolical puzzle (411) ! ..1..9.62..6.1397......84..237.....4.........6.....721..39......9463.2..56.1..3.. diabolical puzzle (448) ! ..7.9.2.......56.8...2...7..7....4....58.79....2....3..3...4...8.43.......1.2.7.. beyond wicked puzzle (545) ! ........9...4..37.1....8.5.....45.1.3..8.6..2.4.13.....3.2....4.65..1...8........ beyond wicked puzzle (573) ! ..4........85.9.346..18....9......5.37.....21.8......9....32..742.7.85........8.. nearly wicked puzzle (499) ! .....89..5.4.3...781..9.3.5....261...7.....9...294....1.9.5..723...6.5.9..58..... nearly wicked puzzle (496) ! .4..18..97..2...1....6.5....56.2..98.........89..7.13....3.2....1...7..56..49..2. diabolical puzzle (447) ! ..78....6...29.75.....6..8.......49....7.1....12.......4..3.....38.74...9....28.. nearly wicked puzzle (482) ! .5..27.4....5.....9...6...7.21..6.7.78.....93.4.8..16.1...5...4.....8....9.71..5. unbelievably wicked puzzle (542) ! .....2.1....49...5...8...29.7..6.2...18...65...3.2..7.63...1...5...74....2.3..... unbelievably wicked puzzle (628) ! .2....7..9.6..1...7..8....1.....86..45.1.6.28..79.....5....9..3...4..9.2..2....8. unbelievably wicked puzzle (735) ! .8..42.36....1..285.....14965..9.................5..73865.....434..2....19.68..5. unbelievably wicked puzzle (549) ! .3...2........93...2..5.7.6..8.4..2...1...9...6..7.5..7.2.1..5...68........5...8. unbelievably wicked puzzle (740) ! .......3...534...2...17...6.1..683..3..9.1..5..653..7.9...52...2...176...6....... unbelievably wicked puzzle (707) ! .6..5.38.....7........319.25.9....2...........2....6.78.241........2.....73.8..5. beyond wicked puzzle (624) ! .6...3.92.....81.....91.3..2.4....78.........89....2.5..8.34.....56.....91.8...6. wicked puzzle (518) ! ....61.5....97.......3..186....2.3...7.5.6.2...1.9....456..7.......35....3.14.... beyond wicked puzzle (528) ! .4.382.7.9.............1..38......9.4.69.73.8.1......26..4.............1.2.876.5. beyond wicked puzzle (712) ! .6......17..9..3.........2..74.2...69513.62473...4.18..3.........8..5..92......1. beyond wicked puzzle (723) ! ..9....5....5...6..3...2..93...8.....481.937.....2...64..7...1..5...3....8....7.. beyond wicked puzzle (610) ! 5.6.2.9.3..8...5...........6..285..9...9.3...8..761..4...........4...3..2.1.5.6.7 1,905 solutions ! 536.2.9....8...............6..285..9...9.3...8..761..4...........4......2.1.....7 957,263 solutions ! .94...13..............76..2.8..1.....32.........2.........5.4.......8..7..63.4..8 r1s7 has size 1 but all rc have size > 1 |
From: Foster B. <fos...@us...> - 2006-02-03 18:20:58
|
Update of /cvsroot/adobe-source/adobe-source/adobe/test/zuidgen In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1031/adobe/test/zuidgen Modified Files: main.cpp Log Message: asl 1.0.13 Index: main.cpp =================================================================== RCS file: /cvsroot/adobe-source/adobe-source/adobe/test/zuidgen/main.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** main.cpp 6 Jan 2006 18:35:27 -0000 1.2 --- main.cpp 3 Feb 2006 18:20:49 -0000 1.3 *************** *** 1,6 **** /* ! 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) */ --- 1,6 ---- /* ! 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) */ *************** *** 22,34 **** int main(int argc, char** /*argv*/) { ! if (argc > 1) ! { ! std::cout << "usage: zuidgen" << std::endl; ! std::cout << " generate a ZUID" << std::endl; ! } ! else ! { ! std::cout << adobe::zuid_t().c_str() << std::endl; ! } ! return 0; } --- 22,34 ---- int main(int argc, char** /*argv*/) { ! if (argc > 1) ! { ! std::cout << "usage: zuidgen" << std::endl; ! std::cout << " generate a ZUID" << std::endl; ! } ! else ! { ! std::cout << adobe::zuid_t().c_str() << std::endl; ! } ! return 0; } |
From: Foster B. <fos...@us...> - 2006-02-03 18:20:57
|
Update of /cvsroot/adobe-source/adobe-source/adobe/test/modal_dialog_interface In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1031/adobe/test/modal_dialog_interface Added Files: Jamfile.v2 main.cpp Log Message: asl 1.0.13 --- 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-02-03 18:20:57
|
Update of /cvsroot/adobe-source/adobe-source/adobe/test/n_queens In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1031/adobe/test/n_queens Modified Files: main.cpp Log Message: asl 1.0.13 Index: main.cpp =================================================================== RCS file: /cvsroot/adobe-source/adobe-source/adobe/test/n_queens/main.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** main.cpp 6 Jan 2006 18:35:26 -0000 1.2 --- main.cpp 3 Feb 2006 18:20:49 -0000 1.3 *************** *** 1,6 **** /* ! 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) */ --- 1,6 ---- /* ! 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) */ *************** *** 23,73 **** std::size_t dancing_queens() { ! enum ! { ! diag_count = N * 2 - 1, ! max_d_index = 2 * N - 2, ! cols_k = N * 2 + diag_count * 2, ! rows_k = N * N, ! file_base = N, ! diagonals_base = file_base + N, ! rdiagonals_base = diagonals_base + diag_count ! }; ! adobe::dancing_links<rows_k, cols_k> links; ! std::size_t row_index(0); ! // std::cerr << "total rows: " << rows_k << ", cols: " << cols_k << std::endl; ! for (std::size_t i(0); i < N; ++i) ! { ! for (std::size_t j(0); j < N; ++j) ! { ! std::size_t R(i); ! std::size_t F(j); ! std::size_t A(i + j); ! std::size_t B(N - 1 - i + j); #if 0 ! std::cerr << row_index << ") " ! << " R" << R << "(" << R << ")" ! << " F" << F << "(" << F + file_base << ")" ! << " A" << A << "(" << A + diagonals_base << ")" ! << " B" << B << "(" << B + rdiagonals_base << ")" ! << std::endl; #endif ! links.set(row_index, R); ! links.set(row_index, F + file_base); ! links.set(row_index, A + diagonals_base); ! links.set(row_index, B + rdiagonals_base); ! links.set_secondary_column(A + diagonals_base); ! links.set_secondary_column(B + rdiagonals_base); ! ++row_index; ! } ! } ! return links.search(std::numeric_limits<std::size_t>::max()); } --- 23,73 ---- std::size_t dancing_queens() { ! enum ! { ! diag_count = N * 2 - 1, ! max_d_index = 2 * N - 2, ! cols_k = N * 2 + diag_count * 2, ! rows_k = N * N, ! file_base = N, ! diagonals_base = file_base + N, ! rdiagonals_base = diagonals_base + diag_count ! }; ! adobe::dancing_links<rows_k, cols_k> links; ! std::size_t row_index(0); ! // std::cerr << "total rows: " << rows_k << ", cols: " << cols_k << std::endl; ! for (std::size_t i(0); i < N; ++i) ! { ! for (std::size_t j(0); j < N; ++j) ! { ! std::size_t R(i); ! std::size_t F(j); ! std::size_t A(i + j); ! std::size_t B(N - 1 - i + j); #if 0 ! std::cerr << row_index << ") " ! << " R" << R << "(" << R << ")" ! << " F" << F << "(" << F + file_base << ")" ! << " A" << A << "(" << A + diagonals_base << ")" ! << " B" << B << "(" << B + rdiagonals_base << ")" ! << std::endl; #endif ! links.set(row_index, R); ! links.set(row_index, F + file_base); ! links.set(row_index, A + diagonals_base); ! links.set(row_index, B + rdiagonals_base); ! links.set_secondary_column(A + diagonals_base); ! links.set_secondary_column(B + rdiagonals_base); ! ++row_index; ! } ! } ! return links.search(std::numeric_limits<std::size_t>::max()); } *************** *** 77,89 **** void dancing_queen_iteration() { ! adobe::timer_t timer; ! std::size_t solutions(dancing_queens<N>()); ! double time(timer.split()); ! std::cout << "Found " << solutions << " solutions to the " ! << N << "-queens problem in " << time << " miliseconds (" ! << (time / 1e3) << " seconds )" << std::endl; ! dancing_queen_iteration<N+1>(); } --- 77,89 ---- void dancing_queen_iteration() { ! adobe::timer_t timer; ! std::size_t solutions(dancing_queens<N>()); ! double time(timer.split()); ! std::cout << "Found " << solutions << " solutions to the " ! << N << "-queens problem in " << time << " miliseconds (" ! << (time / 1e3) << " seconds )" << std::endl; ! dancing_queen_iteration<N+1>(); } *************** *** 93,103 **** void dancing_queen_iteration<18>() { ! adobe::timer_t timer; ! std::size_t solutions(dancing_queens<18>()); ! double time(timer.split()); ! std::cout << "Found " << solutions << " solutions to the " ! << 18 << "-queens problem in " << time << " miliseconds (" ! << (time / 1e3) << " seconds )" << std::endl; } --- 93,103 ---- void dancing_queen_iteration<18>() { ! adobe::timer_t timer; ! std::size_t solutions(dancing_queens<18>()); ! double time(timer.split()); ! std::cout << "Found " << solutions << " solutions to the " ! << 18 << "-queens problem in " << time << " miliseconds (" ! << (time / 1e3) << " seconds )" << std::endl; } *************** *** 110,115 **** int main(int argc, char** argv) { ! dancing_queen_iteration<1>(); ! return 0; } --- 110,115 ---- int main(int argc, char** argv) { ! dancing_queen_iteration<1>(); ! return 0; } |
From: Foster B. <fos...@us...> - 2006-02-03 18:20:57
|
Update of /cvsroot/adobe-source/adobe-source/adobe/test/modal_dialog_interface/resources/modal_dialog_interface.nib In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1031/adobe/test/modal_dialog_interface/resources/modal_dialog_interface.nib Added Files: classes.nib info.nib objects.xib Log Message: asl 1.0.13 --- NEW FILE: objects.xib --- <?xml version="1.0" standalone="yes"?> <object class="NSIBObjectData"> <string name="targetFramework">IBCarbonFramework</string> <object name="rootObject" class="NSCustomObject" id="1"> <string name="customClass">NSApplication</string> </object> <array count="28" name="allObjects"> <object class="IBCarbonMenu" id="29"> <string name="title">main</string> <array count="3" name="items"> <object class="IBCarbonMenuItem" id="185"> <string name="title">modal_dialog_interface</string> <object name="submenu" class="IBCarbonMenu" id="184"> <string name="title">modal_dialog_interface</string> <array count="1" name="items"> <object class="IBCarbonMenuItem" id="187"> <boolean name="disabled">TRUE</boolean> <string name="title">About modal_dialog_interface</string> <int name="keyEquivalentModifier">0</int> <ostype name="command">abou</ostype> </object> </array> <string name="name">_NSAppleMenu</string> </object> </object> <object class="IBCarbonMenuItem" id="127"> <string name="title">File</string> <object name="submenu" class="IBCarbonMenu" id="131"> <string name="title">File</string> <array count="10" name="items"> <object class="IBCarbonMenuItem" id="139"> <boolean name="disabled">TRUE</boolean> <string name="title">New</string> <string name="keyEquivalent">n</string> <ostype name="command">new </ostype> </object> <object class="IBCarbonMenuItem" id="134"> <boolean name="disabled">TRUE</boolean> <string name="title">Openâ¦</string> <string name="keyEquivalent">o</string> <ostype name="command">open</ostype> </object> <object class="IBCarbonMenuItem" id="133"> <boolean name="separator">TRUE</boolean> </object> <object class="IBCarbonMenuItem" id="130"> <boolean name="disabled">TRUE</boolean> <string name="title">Close</string> <string name="keyEquivalent">w</string> <ostype name="command">clos</ostype> </object> <object class="IBCarbonMenuItem" id="138"> <boolean name="disabled">TRUE</boolean> <string name="title">Save</string> <string name="keyEquivalent">s</string> <ostype name="command">save</ostype> </object> <object class="IBCarbonMenuItem" id="137"> <boolean name="disabled">TRUE</boolean> <string name="title">Save Asâ¦</string> <string name="keyEquivalent">S</string> <ostype name="command">svas</ostype> </object> <object class="IBCarbonMenuItem" id="132"> <boolean name="disabled">TRUE</boolean> <string name="title">Revert</string> <string name="keyEquivalent">r</string> <ostype name="command">rvrt</ostype> </object> <object class="IBCarbonMenuItem" id="128"> <boolean name="separator">TRUE</boolean> </object> <object class="IBCarbonMenuItem" id="135"> <boolean name="disabled">TRUE</boolean> <string name="title">Page Setupâ¦</string> <string name="keyEquivalent">P</string> <ostype name="command">page</ostype> </object> <object class="IBCarbonMenuItem" id="136"> <boolean name="disabled">TRUE</boolean> <string name="title">Printâ¦</string> <string name="keyEquivalent">p</string> <ostype name="command">prnt</ostype> </object> </array> </object> </object> <object class="IBCarbonMenuItem" id="152"> <string name="title">Edit</string> <object name="submenu" class="IBCarbonMenu" id="147"> <string name="title">Edit</string> <array count="10" name="items"> <object class="IBCarbonMenuItem" id="141"> <boolean name="disabled">TRUE</boolean> <string name="title">Undo</string> <string name="keyEquivalent">z</string> <ostype name="command">undo</ostype> </object> <object class="IBCarbonMenuItem" id="146"> <boolean name="disabled">TRUE</boolean> <string name="title">Redo</string> <string name="keyEquivalent">Z</string> <ostype name="command">redo</ostype> </object> <object class="IBCarbonMenuItem" id="142"> <boolean name="separator">TRUE</boolean> </object> <object class="IBCarbonMenuItem" id="143"> <boolean name="disabled">TRUE</boolean> <string name="title">Cut</string> <string name="keyEquivalent">x</string> <ostype name="command">cut </ostype> </object> <object class="IBCarbonMenuItem" id="149"> <boolean name="disabled">TRUE</boolean> <string name="title">Copy</string> <string name="keyEquivalent">c</string> <ostype name="command">copy</ostype> </object> <object class="IBCarbonMenuItem" id="144"> <boolean name="disabled">TRUE</boolean> <string name="title">Paste</string> <string name="keyEquivalent">v</string> <ostype name="command">past</ostype> </object> <object class="IBCarbonMenuItem" id="151"> <boolean name="disabled">TRUE</boolean> <string name="title">Delete</string> <ostype name="command">clea</ostype> </object> <object class="IBCarbonMenuItem" id="148"> <boolean name="disabled">TRUE</boolean> <string name="title">Select All</string> <string name="keyEquivalent">a</string> <ostype name="command">sall</ostype> </object> <object class="IBCarbonMenuItem" id="199"> <boolean name="separator">TRUE</boolean> </object> <object class="IBCarbonMenuItem" id="198"> <boolean name="disabled">TRUE</boolean> <string name="title">Special Charactersâ¦</string> <ostype name="command">chrp</ostype> </object> </array> </object> </object> </array> <string name="name">_NSMainMenu</string> </object> <reference idRef="127"/> <reference idRef="128"/> <reference idRef="130"/> <reference idRef="131"/> <reference idRef="132"/> <reference idRef="133"/> <reference idRef="134"/> <reference idRef="135"/> <reference idRef="136"/> <reference idRef="137"/> <reference idRef="138"/> <reference idRef="139"/> <reference idRef="141"/> <reference idRef="142"/> <reference idRef="143"/> <reference idRef="144"/> <reference idRef="146"/> <reference idRef="147"/> <reference idRef="148"/> <reference idRef="149"/> <reference idRef="151"/> <reference idRef="152"/> <reference idRef="184"/> <reference idRef="185"/> <reference idRef="187"/> <reference idRef="198"/> <reference idRef="199"/> </array> <array count="28" name="allParents"> <reference idRef="1"/> <reference idRef="29"/> <reference idRef="131"/> <reference idRef="131"/> <reference idRef="127"/> <reference idRef="131"/> <reference idRef="131"/> <reference idRef="131"/> <reference idRef="131"/> <reference idRef="131"/> <reference idRef="131"/> <reference idRef="131"/> <reference idRef="131"/> <reference idRef="147"/> <reference idRef="147"/> <reference idRef="147"/> <reference idRef="147"/> <reference idRef="147"/> <reference idRef="152"/> <reference idRef="147"/> <reference idRef="147"/> <reference idRef="147"/> <reference idRef="29"/> <reference idRef="185"/> <reference idRef="29"/> <reference idRef="184"/> <reference idRef="147"/> <reference idRef="147"/> </array> <dictionary count="2" name="nameTable"> <string>Files Owner</string> <reference idRef="1"/> <string>MenuBar</string> <reference idRef="29"/> </dictionary> <unsigned_int name="nextObjectID">200</unsigned_int> </object> --- NEW FILE: info.nib --- <?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>IBDocumentLocation</key> <string>81 8 356 240 0 0 1440 878 </string> <key>IBEditorPositions</key> <dict> <key>29</key> <string>220 644 276 44 0 0 1440 878 </string> </dict> <key>IBFramework Version</key> <string>443.0</string> <key>IBOldestOS</key> <integer>3</integer> <key>IBOpenObjects</key> <array> <integer>29</integer> </array> <key>IBSystem Version</key> <string>8G32</string> <key>targetFramework</key> <string>IBCarbonFramework</string> </dict> </plist> --- NEW FILE: classes.nib --- { IBClasses = (); IBVersion = 1; } |
From: Foster B. <fos...@us...> - 2006-02-03 18:20:57
|
Update of /cvsroot/adobe-source/adobe-source/ide_projects/darwin In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv1031/ide_projects/darwin Modified Files: adobe_all.xcconfig Log Message: asl 1.0.13 Index: adobe_all.xcconfig =================================================================== RCS file: /cvsroot/adobe-source/adobe-source/ide_projects/darwin/adobe_all.xcconfig,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** adobe_all.xcconfig 6 Jan 2006 18:35:27 -0000 1.1 --- adobe_all.xcconfig 3 Feb 2006 18:20:49 -0000 1.2 *************** *** 1,3 **** ! ARCHS = i386 ppc GCC_DYNAMIC_NO_PIC = NO GCC_ENABLE_FIX_AND_CONTINUE = NO --- 1,3 ---- ! ARCHS = ppc GCC_DYNAMIC_NO_PIC = NO GCC_ENABLE_FIX_AND_CONTINUE = NO *************** *** 10,13 **** PREBINDING = NO // doesn't work for 10.4.x SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk ! WARNING_CFLAGS = -Wno-long-double ZERO_LINK = NO --- 10,13 ---- PREBINDING = NO // doesn't work for 10.4.x SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk ! WARNING_CFLAGS = -Wall -Wno-long-double ZERO_LINK = NO |