diff --git a/Doxyfile.in b/Doxyfile.in index cda0bbf4..2754b40f 100644 --- a/Doxyfile.in +++ b/Doxyfile.in @@ -159,7 +159,7 @@ JAVADOC_AUTOBRIEF = NO # interpret the first line (until the first dot) of a Qt-style # comment as the brief description. If set to NO, the comments # will behave just like regular Qt-style comments (thus requiring -# an explicit \brief command for a brief description.) +# an explicit @brief command for a brief description.) QT_AUTOBRIEF = NO @@ -595,7 +595,7 @@ FILE_VERSION_FILTER = # You can optionally specify a file name after the option, if omitted # DoxygenLayout.xml will be used as the name of the layout file. -LAYOUT_FILE = +LAYOUT_FILE = # The CITE_BIB_FILES tag can be used to specify one or more bib files # containing the references data. This must be a list of .bib files. The @@ -859,7 +859,7 @@ VERBATIM_HEADERS = YES # of all compounds will be generated. Enable this if the project # contains a lot of classes, structs, unions or interfaces. -ALPHABETICAL_INDEX = NO +ALPHABETICAL_INDEX = YES # If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then # the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns diff --git a/include/AudioBufferSource.h b/include/AudioBufferSource.h index df195fd4..7c7ebef2 100644 --- a/include/AudioBufferSource.h +++ b/include/AudioBufferSource.h @@ -45,7 +45,7 @@ namespace openshot { /** - * \brief This class is used to expose an AudioSampleBuffer as an AudioSource in JUCE. + * @brief This class is used to expose an AudioSampleBuffer as an AudioSource in JUCE. * * The JUCE library cannot play audio directly from an AudioSampleBuffer, so this class exposes * an AudioSampleBuffer as a AudioSource, so that JUCE can play the audio. diff --git a/include/AudioResampler.h b/include/AudioResampler.h index e0abd706..89498516 100644 --- a/include/AudioResampler.h +++ b/include/AudioResampler.h @@ -46,7 +46,7 @@ namespace openshot { /** - * \brief This class is used to resample audio data for many sequential frames. It maintains some data from the last + * @brief This class is used to resample audio data for many sequential frames. It maintains some data from the last * call to GetResampledBuffer(), so there are no pops and clicks between frames. */ class AudioResampler { diff --git a/include/Cache.h b/include/Cache.h index 17d758c6..b841e577 100644 --- a/include/Cache.h +++ b/include/Cache.h @@ -38,7 +38,7 @@ namespace openshot { /** - * \brief This class is a cache manager for Frame objects. It is used by FileReaders (such as FFmpegReader) to cache + * @brief This class is a cache manager for Frame objects. It is used by FileReaders (such as FFmpegReader) to cache * recently accessed frames. * * Due to the high cost of decoding streams, once a frame is decoded, converted to RGB, and a Frame object is created, diff --git a/include/ChunkReader.h b/include/ChunkReader.h index ad2e9fad..1783cb92 100644 --- a/include/ChunkReader.h +++ b/include/ChunkReader.h @@ -51,7 +51,7 @@ namespace openshot { /** - * \brief This struct holds the location of a frame within a chunk. + * @brief This struct holds the location of a frame within a chunk. * * Chunks are small video files, which typically contain a few seconds of video each. * Locating a frame among these small video files is accomplished by using @@ -64,7 +64,7 @@ namespace openshot }; /** - * \brief This version enumeration allows the user to choose which version + * @brief This version enumeration allows the user to choose which version * of the chunk they would like (low quality, medium, or high quality). * * Since chunks contain multiple video streams, this version enumeration @@ -81,7 +81,7 @@ namespace openshot }; /** - * \brief This class reads a special chunk-formatted file, which can be easily + * @brief This class reads a special chunk-formatted file, which can be easily * shared in a distributed environment, and can return openshot::Frame objects. * * \code @@ -122,7 +122,7 @@ namespace openshot public: - /// \brief Constructor for ChunkReader. This automatically opens the chunk file or folder and loads + /// @brief Constructor for ChunkReader. This automatically opens the chunk file or folder and loads /// frame 1, or it throws one of the following exceptions. /// @param path The folder path / location of a chunk (chunks are stored as folders) /// @param chunk_version Choose the video version / quality (THUMBNAIL, PREVIEW, or FINAL) @@ -131,15 +131,15 @@ namespace openshot /// Close the reader void Close(); - /// \brief Get the chunk size (number of frames to write in each chunk) + /// @brief Get the chunk size (number of frames to write in each chunk) /// @returns The number of frames in this chunk int GetChunkSize() { return chunk_size; }; - /// \brief Set the chunk size (number of frames to write in each chunk) + /// @brief Set the chunk size (number of frames to write in each chunk) /// @param new_size The number of frames per chunk void SetChunkSize(int new_size) { chunk_size = new_size; }; - /// \brief Get an openshot::Frame object for a specific frame number of this reader. + /// @brief Get an openshot::Frame object for a specific frame number of this reader. /// @returns The requested frame (containing the image and audio) /// @param requested_frame The frame number you want to retrieve tr1::shared_ptr GetFrame(int requested_frame) throw(ReaderClosed, ChunkNotFound); diff --git a/include/ChunkWriter.h b/include/ChunkWriter.h index c71bcdf8..1f4af2a5 100644 --- a/include/ChunkWriter.h +++ b/include/ChunkWriter.h @@ -2,9 +2,9 @@ #define OPENSHOT_CHUNK_WRITER_H /** - * \file - * \brief Header file for ChunkWriter class - * \author Copyright (c) 2008-2013 OpenShot Studios, LLC + * @file + * @brief Header file for ChunkWriter class + * @author Copyright (c) 2008-2013 OpenShot Studios, LLC */ #include "ReaderBase.h" @@ -33,7 +33,7 @@ using namespace std; namespace openshot { /** - * \brief This class takes any reader and generates a special type of video file, built with + * @brief This class takes any reader and generates a special type of video file, built with * chunks of small video and audio data. These chunks can easily be passed around in a distributed * computing environment, without needing to share the entire video file. * diff --git a/include/Clip.h b/include/Clip.h index 1e94f592..38073f12 100644 --- a/include/Clip.h +++ b/include/Clip.h @@ -2,9 +2,9 @@ #define OPENSHOT_CLIP_H /** - * \file - * \brief Header file for Clip class - * \author Copyright (c) 2008-2013 OpenShot Studios, LLC + * @file + * @brief Header file for Clip class + * @author Copyright (c) 2008-2013 OpenShot Studios, LLC */ /// Do not include the juce unittest headers, because it collides with unittest++ @@ -64,7 +64,7 @@ namespace openshot { }; /** - * \brief This class represents a clip + * @brief This class represents a clip * * Each image, video, or audio file is represented on a layer as a clip. A clip has many * properties that affect how it behaves on the timeline, such as its size, position, diff --git a/include/Color.h b/include/Color.h index 31c4e4c4..0dfff2d9 100644 --- a/include/Color.h +++ b/include/Color.h @@ -2,9 +2,9 @@ #define OPENSHOT_COLOR_H /** - * \file - * \brief Header file for Color class - * \author Copyright (c) 2008-2013 OpenShot Studios, LLC + * @file + * @brief Header file for Color class + * @author Copyright (c) 2008-2013 OpenShot Studios, LLC */ #include "KeyFrame.h" @@ -12,7 +12,7 @@ namespace openshot { /** - * \brief This struct represents a color (used on the timeline and clips) + * @brief This struct represents a color (used on the timeline and clips) * * Colors are represented by 4 curves, representing red, green, and blue. The curves * can be used to animate colors over time. diff --git a/include/Coordinate.h b/include/Coordinate.h index f4068cd5..41f8cc0a 100644 --- a/include/Coordinate.h +++ b/include/Coordinate.h @@ -2,9 +2,9 @@ #define OPENSHOT_COORDINATE_H /** - * \file - * \brief Header file for Coordinate class - * \author Copyright (c) 2008-2013 OpenShot Studios, LLC + * @file + * @brief Header file for Coordinate class + * @author Copyright (c) 2008-2013 OpenShot Studios, LLC */ #include "../include/Fraction.h" @@ -13,7 +13,7 @@ namespace openshot { /** - * \brief This class represents a Cartesian coordinate (X, Y) used in the Keyframe animation system. + * @brief This class represents a Cartesian coordinate (X, Y) used in the Keyframe animation system. * * Animation involves the changing (i.e. interpolation) of numbers over time. A series of Coordinate * objects allows us to plot a specific curve or line used during interpolation. In other words, it helps us diff --git a/include/DecklinkReader.h b/include/DecklinkReader.h index 69a5279d..11e83f2d 100644 --- a/include/DecklinkReader.h +++ b/include/DecklinkReader.h @@ -2,9 +2,9 @@ #define OPENSHOT_DECKLINK_READER_H /** - * \file - * \brief Header file for ImageReader class - * \author Copyright (c) 2008-2013 OpenShot Studios, LLC + * @file + * @brief Header file for ImageReader class + * @author Copyright (c) 2008-2013 OpenShot Studios, LLC */ #include "ReaderBase.h" @@ -33,7 +33,7 @@ namespace openshot { /** - * \brief This class uses the Blackmagic Decklink libraries, to open video streams on Blackmagic devices, and return + * @brief This class uses the Blackmagic Decklink libraries, to open video streams on Blackmagic devices, and return * openshot::Frame objects containing the image and audio data. */ class DecklinkReader : public ReaderBase diff --git a/include/DecklinkWriter.h b/include/DecklinkWriter.h index da0f788a..f1859f92 100644 --- a/include/DecklinkWriter.h +++ b/include/DecklinkWriter.h @@ -2,9 +2,9 @@ #define OPENSHOT_DECKLINK_WRITER_H /** - * \file - * \brief Header file for ImageReader class - * \author Copyright (c) 2008-2013 OpenShot Studios, LLC + * @file + * @brief Header file for ImageReader class + * @author Copyright (c) 2008-2013 OpenShot Studios, LLC */ #include "WriterBase.h" @@ -33,7 +33,7 @@ namespace openshot { /** - * \brief This class uses the Blackmagic Decklink libraries, to open video streams on Blackmagic devices, and return + * @brief This class uses the Blackmagic Decklink libraries, to open video streams on Blackmagic devices, and return * openshot::Frame objects containing the image and audio data. */ class DecklinkWriter : public WriterBase diff --git a/include/DummyReader.h b/include/DummyReader.h index 6ad2655e..55b0fdf4 100644 --- a/include/DummyReader.h +++ b/include/DummyReader.h @@ -2,9 +2,9 @@ #define OPENSHOT_DUMMY_READER_H /** - * \file - * \brief Header file for ImageReader class - * \author Copyright (c) 2008-2013 OpenShot Studios, LLC + * @file + * @brief Header file for ImageReader class + * @author Copyright (c) 2008-2013 OpenShot Studios, LLC */ #include "ReaderBase.h" @@ -25,7 +25,7 @@ using namespace std; namespace openshot { /** - * \brief This class is used as a simple, dummy reader, which always returns a blank frame, and + * @brief This class is used as a simple, dummy reader, which always returns a blank frame, and * can be created with any framerate or samplerate. This is useful in unit tests that need to test * different framerates or samplerates. */ diff --git a/include/Exceptions.h b/include/Exceptions.h index 872084a9..e7dcd377 100644 --- a/include/Exceptions.h +++ b/include/Exceptions.h @@ -2,9 +2,9 @@ #define OPENSHOT_EXCEPTIONS_H /** - * \file - * \brief Header file for all Exception classes - * \author Copyright (c) 2008-2013 OpenShot Studios, LLC + * @file + * @brief Header file for all Exception classes + * @author Copyright (c) 2008-2013 OpenShot Studios, LLC */ #include @@ -14,7 +14,7 @@ using namespace std; namespace openshot { /** - * \brief Base exception class with a custom message variable. + * @brief Base exception class with a custom message variable. * * A custom error message field has been added to the std::exception base class. All * OpenShot exception classes inherit from this class. diff --git a/include/FFmpegReader.h b/include/FFmpegReader.h index 7f9ec5f7..ef3ab809 100644 --- a/include/FFmpegReader.h +++ b/include/FFmpegReader.h @@ -1,12 +1,34 @@ +/** + * @file + * @brief Header file for FFmpegReader class + * @author Jonathan Thomas + * + * @section LICENSE + * + * Copyright (c) 2008-2013 OpenShot Studios, LLC + * (http://www.openshotstudios.com). This file is part of + * OpenShot Library (http://www.openshot.org), an open-source project + * dedicated to delivering high quality video editing and animation solutions + * to the world. + * + * OpenShot Library is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * OpenShot Library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with OpenShot Library. If not, see . + */ + + #ifndef OPENSHOT_FFMPEG_READER_H #define OPENSHOT_FFMPEG_READER_H -/** - * \file - * \brief Header file for FFmpegReader class - * \author Copyright (c) 2008-2013 OpenShot Studios, LLC - */ - #include "ReaderBase.h" // Include FFmpeg headers and macros @@ -39,7 +61,7 @@ namespace openshot }; /** - * \brief This class uses the FFmpeg libraries, to open video files and audio files, and return + * @brief This class uses the FFmpeg libraries, to open video files and audio files, and return * openshot::Frame objects for any frame in the file. * * All seeking and caching is handled internally, and the only public interface is the GetFrame() @@ -191,7 +213,7 @@ namespace openshot /// Get a shared pointer to a openshot::Frame object for a specific frame number of this reader. /// /// @returns The requested frame of video - /// @param[requested_frame] number The frame number that is requested. + /// @param requested_frame The frame number that is requested. tr1::shared_ptr GetFrame(int requested_frame) throw(ReaderClosed, TooManySeeks); /// Open File - which is called by the constructor automatically diff --git a/include/FFmpegWriter.h b/include/FFmpegWriter.h index 6d2fd229..9b83c822 100644 --- a/include/FFmpegWriter.h +++ b/include/FFmpegWriter.h @@ -2,9 +2,9 @@ #define OPENSHOT_FFMPEG_WRITER_H /** - * \file - * \brief Header file for FFmpegWriter class - * \author Copyright (c) 2008-2013 OpenShot Studios, LLC + * @file + * @brief Header file for FFmpegWriter class + * @author Copyright (c) 2008-2013 OpenShot Studios, LLC */ #include "ReaderBase.h" @@ -39,7 +39,7 @@ namespace openshot }; /** - * \brief This class uses the FFmpeg libraries, to write and encode video files and audio files + * @brief This class uses the FFmpeg libraries, to write and encode video files and audio files * * TODO */ diff --git a/include/Fraction.h b/include/Fraction.h index 5c9680ae..23eb29be 100644 --- a/include/Fraction.h +++ b/include/Fraction.h @@ -2,15 +2,15 @@ #define OPENSHOT_FRACTION_H /** - * \file - * \brief Header file for Fraction class - * \author Copyright (c) 2008-2013 OpenShot Studios, LLC + * @file + * @brief Header file for Fraction class + * @author Copyright (c) 2008-2013 OpenShot Studios, LLC */ namespace openshot { /** - * \brief This class represents a fraction + * @brief This class represents a fraction * * Fractions are often used in video editing to represent ratios and rates, for example: * pixel ratios, frames per second, timebase, and other common ratios. Fractions are preferred diff --git a/include/Frame.h b/include/Frame.h index ddbe4c0d..d20885df 100644 --- a/include/Frame.h +++ b/include/Frame.h @@ -2,9 +2,9 @@ #define OPENSHOT_FRAME_H /** - * \file - * \brief Header file for Frame class - * \author Copyright (c) 2008-2013 OpenShot Studios, LLC + * @file + * @brief Header file for Frame class + * @author Copyright (c) 2008-2013 OpenShot Studios, LLC */ /// Do not include the juce unittest headers, because it collides with unittest++ @@ -41,7 +41,7 @@ using namespace std; namespace openshot { /** - * \brief This class represents a single frame of video (i.e. image & audio data) + * @brief This class represents a single frame of video (i.e. image & audio data) * * FileReaders (such as FFmpegReader) use instances of this class to store the individual frames of video, * which include both the image data (i.e. pixels) and audio samples. diff --git a/include/FrameMapper.h b/include/FrameMapper.h index 2a7ac19b..a660878e 100644 --- a/include/FrameMapper.h +++ b/include/FrameMapper.h @@ -2,9 +2,9 @@ #define OPENSHOT_FRAMEMAPPER_H /** - * \file - * \brief Header file for the FrameMapper class - * \author Copyright (c) 2008-2013 OpenShot Studios, LLC + * @file + * @brief Header file for the FrameMapper class + * @author Copyright (c) 2008-2013 OpenShot Studios, LLC */ #include @@ -37,7 +37,7 @@ namespace openshot }; /** - * \brief This struct holds a single field (half a frame). + * @brief This struct holds a single field (half a frame). * * A frame of video is made up of 2 fields (half a frame). This struct points to which original * frame, and whether this is the ODD or EVEN lines (i.e. top or bottom). @@ -57,7 +57,7 @@ namespace openshot }; /** - * \brief This struct holds a the range of samples needed by this frame + * @brief This struct holds a the range of samples needed by this frame * * When frame rate is changed, the audio needs to be redistributed among the remaining * frames. This struct holds the range samples needed by the this frame. @@ -74,7 +74,7 @@ namespace openshot }; /** - * \brief This struct holds two fields which together make up a complete video frame. + * @brief This struct holds two fields which together make up a complete video frame. * * These fields can point at different original frame numbers, for example the odd lines from * frame 3, and the even lines of frame 4, if required by a pull-down technique. @@ -88,7 +88,7 @@ namespace openshot /** - * \brief This class creates a mapping between 2 different frame rates, applying a specific pull-down technique. + * @brief This class creates a mapping between 2 different frame rates, applying a specific pull-down technique. * * This class creates a mapping between 2 different video files, and supports many pull-down techniques, * such as 2:3:2:3 or 2:3:3:2, and also supports inverse telecine. Pull-down techniques are only needed to remove @@ -157,7 +157,7 @@ namespace openshot void SourceFPS(Framerate new_fps) { original = new_fps; }; /** - * \brief Re-map time to slow down, speed up, or reverse a clip based on a Keyframe. + * @brief Re-map time to slow down, speed up, or reverse a clip based on a Keyframe. * * This method re-maps the time of a clip, or in other words, changes the sequence and/or * duration of frames in a clip. Because this method accepts a Keyframe, the time, sequence, diff --git a/include/FrameRate.h b/include/FrameRate.h index 948148fa..7514f071 100644 --- a/include/FrameRate.h +++ b/include/FrameRate.h @@ -2,9 +2,9 @@ #define OPENSHOT_FRAMERATE_H /** - * \file - * \brief Header file for the FrameRate class - * \author Copyright (c) 2008-2013 OpenShot Studios, LLC + * @file + * @brief Header file for the FrameRate class + * @author Copyright (c) 2008-2013 OpenShot Studios, LLC */ #include @@ -13,7 +13,7 @@ namespace openshot { /** - * \brief This class represents a frame rate (otherwise known as frames per second). + * @brief This class represents a frame rate (otherwise known as frames per second). * * Frame rates are stored as a fraction, such as 24/1, 25/1 and 30000/1001 (29.97). * diff --git a/include/ImageReader.h b/include/ImageReader.h index 3f33a563..f9d00cea 100644 --- a/include/ImageReader.h +++ b/include/ImageReader.h @@ -2,9 +2,9 @@ #define OPENSHOT_IMAGE_READER_H /** - * \file - * \brief Header file for ImageReader class - * \author Copyright (c) 2008-2013 OpenShot Studios, LLC + * @file + * @brief Header file for ImageReader class + * @author Copyright (c) 2008-2013 OpenShot Studios, LLC */ #include "ReaderBase.h" @@ -25,7 +25,7 @@ namespace openshot { /** - * \brief This class uses the ImageMagick++ libraries, to open image files, and return + * @brief This class uses the ImageMagick++ libraries, to open image files, and return * openshot::Frame objects containing the image. */ class ImageReader : public ReaderBase diff --git a/include/Json.h b/include/Json.h index 54c01a0f..9c6295f5 100644 --- a/include/Json.h +++ b/include/Json.h @@ -2,9 +2,9 @@ #define OPENSHOT_JSON_H /** - * \file - * \brief Header file for JSON class - * \author Copyright (c) 2008-2013 OpenShot Studios, LLC + * @file + * @brief Header file for JSON class + * @author Copyright (c) 2008-2013 OpenShot Studios, LLC */ #include "../thirdparty/jsoncpp/include/json/json.h" diff --git a/include/KeyFrame.h b/include/KeyFrame.h index b84713ed..1bd2fb79 100644 --- a/include/KeyFrame.h +++ b/include/KeyFrame.h @@ -2,9 +2,9 @@ #define OPENSHOT_KEYFRAME_H /** - * \file - * \brief Header file for the Keyframe class - * \author Copyright (c) 2008-2013 OpenShot Studios, LLC + * @file + * @brief Header file for the Keyframe class + * @author Copyright (c) 2008-2013 OpenShot Studios, LLC */ #include #include @@ -21,7 +21,7 @@ using namespace openshot; namespace openshot { /** - * \brief A Keyframe is a collection of Point instances, which is used to vary a number or property over time. + * @brief A Keyframe is a collection of Point instances, which is used to vary a number or property over time. * * Keyframes are used to animate and interpolate values of properties over time. For example, a single property * can use a Keyframe instead of a constant value. Assume you want to slide an image (from left to right) over @@ -112,7 +112,7 @@ namespace openshot { int GetLength(); /** - * \brief Calculate all of the values for this keyframe. + * @brief Calculate all of the values for this keyframe. * * This clears any existing data in the "values" vector. This method is automatically called * by AddPoint(), so you don't typically need to call this method. diff --git a/include/OpenShot.h b/include/OpenShot.h index c8d5e54c..e2e7f4bc 100644 --- a/include/OpenShot.h +++ b/include/OpenShot.h @@ -6,27 +6,6 @@ * @brief This header includes all commonly used headers for libopenshot, for ease-of-use * @author Jonathan Thomas * - * @section LICENSE - * - * Copyright (c) 2008-2013 OpenShot Studios, LLC - * (http://www.openshotstudios.com). This file is part of - * OpenShot Library (http://www.openshot.org), an open-source project - * dedicated to delivering high quality video editing and animation solutions - * to the world. - * - * OpenShot Library is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * OpenShot Library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with OpenShot Library. If not, see . - * * @mainpage OpenShot Video Editing Library C++ API * * Welcome to the OpenShot Video Editing Library C++ API | libopenshot. This library was developed to @@ -44,12 +23,14 @@ * #include "OpenShot.h" * @endcode * + * ### The Basics ### * To understand libopenshot, we must first learn about the basic building blocks:. * - Readers - A reader is used to load a video, audio, or image file (or stream) and return openshot::Frame objects. * - Writers - A writer consumes openshot::Frame objects, and is used to create a video, audio, or image file (or stream). * - Timeline - A timeline allows many readers to be trimmed, arranged, and layered together. * - KeyFrame - A Keyframe is used to change values of properties over time on the timeline. * + * ### Example Code ### * Now that you understand the basic building blocks of libopenshot, lets take a look at a simple example, * where we use a reader to access frames of a video file. @@ -71,6 +52,26 @@ * @endcode * * To continue learning about libopenshot, take a look at the full list of classes available. + * + * ### License & Copyright ### + * Copyright (c) 2008-2013 OpenShot Studios, LLC + * (http://www.openshotstudios.com). OpenShot Library (http://www.openshot.org) is an open-source project + * dedicated to delivering high quality video editing and animation solutions + * to the world. + * + * OpenShot Library is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * OpenShot Library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with OpenShot Library. If not, see . + * */ #include "AudioBufferSource.h" diff --git a/include/Player.h b/include/Player.h index 0a988c64..40e2aab7 100644 --- a/include/Player.h +++ b/include/Player.h @@ -2,9 +2,9 @@ #define OPENSHOT_PLAYER_H /** - * \file - * \brief Header file for Frame class - * \author Copyright (c) 2008-2013 OpenShot Studios, LLC + * @file + * @brief Header file for Frame class + * @author Copyright (c) 2008-2013 OpenShot Studios, LLC */ #include @@ -22,7 +22,7 @@ namespace openshot typedef void (*CallbackPtr)(int, int, int, const Magick::PixelPacket *Pixels, void *); /** - * \brief This class is used to playback a video from a reader. + * @brief This class is used to playback a video from a reader. * * This player does not actually show the video, but rather it invokes a method each time * a frame should be displayed. This allows the calling application to display the image using diff --git a/include/Point.h b/include/Point.h index b74ec20e..891a0cbf 100644 --- a/include/Point.h +++ b/include/Point.h @@ -2,9 +2,9 @@ #define OPENSHOT_POINT_H /** - * \file - * \brief Header file for the Point class - * \author Copyright (c) 2008-2013 OpenShot Studios, LLC + * @file + * @brief Header file for the Point class + * @author Copyright (c) 2008-2013 OpenShot Studios, LLC */ #include "Coordinate.h" @@ -34,7 +34,7 @@ namespace openshot }; /** - * \brief A Point is the basic building block of a key-frame curve. + * @brief A Point is the basic building block of a key-frame curve. * * Points have a primary coordinate and a left and right handle coordinate. * The handles are used to influence the direction of the curve as it diff --git a/include/ReaderBase.h b/include/ReaderBase.h index 3146c78c..1d3a4b6e 100644 --- a/include/ReaderBase.h +++ b/include/ReaderBase.h @@ -2,9 +2,9 @@ #define OPENSHOT_FILE_READER_BASE_H /** - * \file - * \brief Header file for ReaderBase class - * \author Copyright (c) 2008-2013 OpenShot Studios, LLC + * @file + * @brief Header file for ReaderBase class + * @author Copyright (c) 2008-2013 OpenShot Studios, LLC */ #include @@ -18,7 +18,7 @@ using namespace std; namespace openshot { /** - * \brief This struct contains info about a media file, such as height, width, frames per second, etc... + * @brief This struct contains info about a media file, such as height, width, frames per second, etc... * * Each derived class of ReaderBase is responsible for updating this struct to reflect accurate information * about the streams. Derived classes of ReaderBase should call the InitFileInfo() method to initialize the @@ -52,7 +52,7 @@ namespace openshot }; /** - * \brief This abstract class is the base class, used by readers. Readers are types of classes that read + * @brief This abstract class is the base class, used by readers. Readers are types of classes that read * video, audio, and image files, and return openshot::Frame objects. * * The only requirements for a 'reader', are to derive from this base class, implement the diff --git a/include/TextReader.h b/include/TextReader.h index f13487f3..6ab27815 100644 --- a/include/TextReader.h +++ b/include/TextReader.h @@ -2,9 +2,9 @@ #define OPENSHOT_TEXT_READER_H /** - * \file - * \brief Header file for TextReader class - * \author Copyright (c) 2008-2013 OpenShot Studios, LLC + * @file + * @brief Header file for TextReader class + * @author Copyright (c) 2008-2013 OpenShot Studios, LLC */ #include "ReaderBase.h" @@ -26,7 +26,7 @@ namespace openshot { /** - * \brief This class uses the ImageMagick++ libraries, to create frames with "Text", and return + * @brief This class uses the ImageMagick++ libraries, to create frames with "Text", and return * openshot::Frame objects containing the image of the text. */ class TextReader : public ReaderBase diff --git a/include/Timeline.h b/include/Timeline.h index 6c51cd8a..92cfe4a9 100644 --- a/include/Timeline.h +++ b/include/Timeline.h @@ -2,9 +2,9 @@ #define OPENSHOT_TIMELINE_H /** - * \file - * \brief Header file for Timeline class - * \author Copyright (c) 2008-2013 OpenShot Studios, LLC + * @file + * @brief Header file for Timeline class + * @author Copyright (c) 2008-2013 OpenShot Studios, LLC */ // Defining some ImageMagic flags... for Mac (since they appear to be unset) @@ -40,7 +40,7 @@ namespace openshot { }}; /** - * \brief This class represents a timeline + * @brief This class represents a timeline * * The timeline is one of the most important features of a video editor, and controls all * aspects of how video, image, and audio clips are combined together, and how the final diff --git a/include/WriterBase.h b/include/WriterBase.h index adc0b0b2..f6c92e00 100644 --- a/include/WriterBase.h +++ b/include/WriterBase.h @@ -2,9 +2,9 @@ #define OPENSHOT_FILE_WRITER_BASE_H /** - * \file - * \brief Header file for WriterBase class - * \author Copyright (c) 2008-2013 OpenShot Studios, LLC + * @file + * @brief Header file for WriterBase class + * @author Copyright (c) 2008-2013 OpenShot Studios, LLC */ #include @@ -18,7 +18,7 @@ using namespace std; namespace openshot { /** - * \brief This struct contains info about encoding a media file, such as height, width, frames per second, etc... + * @brief This struct contains info about encoding a media file, such as height, width, frames per second, etc... * * Each derived class of WriterBase is responsible for updating this struct to reflect accurate information * about the streams. @@ -51,7 +51,7 @@ namespace openshot }; /** - * \brief This abstract class is the base class, used by writers. Writers are types of classes that encode + * @brief This abstract class is the base class, used by writers. Writers are types of classes that encode * video, audio, and image files. * * The only requirements for a 'writer', are to derive from this base class, and implement the diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 46be5fc7..95f32112 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -29,7 +29,7 @@ include_directories(${SDL_INCLUDE_DIR}) ################# QT4 ################### # Find QT4 libraries -#SET(QT_QMAKE_EXECUTABLE '/usr/bin/qmake-qt4') # DEBUB, WORK-AROUND: Force the use of QT4 (when multiple versions are installed) +SET(QT_QMAKE_EXECUTABLE '/usr/bin/qmake-qt4') # DEBUB, WORK-AROUND: Force the use of QT4 (when multiple versions are installed) FIND_PACKAGE(Qt4) # Include Qt headers (needed for compile) diff --git a/src/ChunkWriter.cpp b/src/ChunkWriter.cpp index 0607713d..26c94455 100644 --- a/src/ChunkWriter.cpp +++ b/src/ChunkWriter.cpp @@ -1,7 +1,7 @@ /** - * \file - * \brief Source code for the ChunkWriter class - * \author Copyright (c) 2008-2013 OpenShot Studios, LLC + * @file + * @brief Source code for the ChunkWriter class + * @author Copyright (c) 2008-2013 OpenShot Studios, LLC */ diff --git a/src/Coordinate.cpp b/src/Coordinate.cpp index cd29333c..2820beec 100644 --- a/src/Coordinate.cpp +++ b/src/Coordinate.cpp @@ -1,7 +1,7 @@ /** - * \file - * \brief Source code for the Coordinate class - * \author Copyright (c) 2008-2013 OpenShot Studios, LLC + * @file + * @brief Source code for the Coordinate class + * @author Copyright (c) 2008-2013 OpenShot Studios, LLC */ #include "../include/Coordinate.h" diff --git a/src/FFmpegReader.cpp b/src/FFmpegReader.cpp index 9d797505..b9aaa4a9 100644 --- a/src/FFmpegReader.cpp +++ b/src/FFmpegReader.cpp @@ -1,3 +1,30 @@ +/** + * @file + * @brief Source file for FFmpegReader class + * @author Jonathan Thomas + * + * @section LICENSE + * + * Copyright (c) 2008-2013 OpenShot Studios, LLC + * (http://www.openshotstudios.com). This file is part of + * OpenShot Library (http://www.openshot.org), an open-source project + * dedicated to delivering high quality video editing and animation solutions + * to the world. + * + * OpenShot Library is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * OpenShot Library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with OpenShot Library. If not, see . + */ + #include "../include/FFmpegReader.h" using namespace openshot; @@ -1181,6 +1208,8 @@ audio_packet_location FFmpegReader::GetAudioPTSLocation(int pts) // Divide by the video timebase, to get the video frame number (frame # is decimal at this point) double frame = (audio_seconds * info.fps.ToDouble()) + 1; + /** @todo Make the value externally configurable */ + // Frame # as a whole number (no more decimals) int whole_frame = int(frame); diff --git a/src/Frame.cpp b/src/Frame.cpp index 9e2b8779..121407aa 100644 --- a/src/Frame.cpp +++ b/src/Frame.cpp @@ -1,7 +1,7 @@ /** - * \file - * \brief Source code for the Frame class - * \author Copyright (c) 2008-2013 OpenShot Studios, LLC + * @file + * @brief Source code for the Frame class + * @author Copyright (c) 2008-2013 OpenShot Studios, LLC */ #include "../include/Frame.h" diff --git a/src/FrameMapper.cpp b/src/FrameMapper.cpp index d7ef3cf0..cdd179fe 100644 --- a/src/FrameMapper.cpp +++ b/src/FrameMapper.cpp @@ -1,7 +1,7 @@ /** - * \file - * \brief Source code for the FrameMapper class - * \author Copyright (c) 2008-2013 OpenShot Studios, LLC + * @file + * @brief Source code for the FrameMapper class + * @author Copyright (c) 2008-2013 OpenShot Studios, LLC */ #include "../include/FrameMapper.h" diff --git a/src/FrameRate.cpp b/src/FrameRate.cpp index 7e5a4189..52905595 100644 --- a/src/FrameRate.cpp +++ b/src/FrameRate.cpp @@ -1,7 +1,7 @@ /** - * \file - * \brief Source code for the FrameRate class - * \author Copyright (c) 2008-2013 OpenShot Studios, LLC + * @file + * @brief Source code for the FrameRate class + * @author Copyright (c) 2008-2013 OpenShot Studios, LLC */ #include "../include/FrameRate.h" diff --git a/src/KeyFrame.cpp b/src/KeyFrame.cpp index 9cb95a9c..420932e6 100644 --- a/src/KeyFrame.cpp +++ b/src/KeyFrame.cpp @@ -1,7 +1,7 @@ /** - * \file - * \brief Source code for the Keyframe class - * \author Copyright (c) 2008-2013 OpenShot Studios, LLC + * @file + * @brief Source code for the Keyframe class + * @author Copyright (c) 2008-2013 OpenShot Studios, LLC */ #include "../include/KeyFrame.h" diff --git a/src/Point.cpp b/src/Point.cpp index 7e1710aa..a33e0539 100644 --- a/src/Point.cpp +++ b/src/Point.cpp @@ -1,7 +1,7 @@ /** - * \file - * \brief Source code for the Point class - * \author Copyright (c) 2008-2013 OpenShot Studios, LLC + * @file + * @brief Source code for the Point class + * @author Copyright (c) 2008-2013 OpenShot Studios, LLC */ #include "../include/Point.h" diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index ec2139a6..72a3fb26 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -35,7 +35,7 @@ include_directories(${SDL_INCLUDE_DIR}) ################# QT4 ################### # Find QT4 libraries -#SET(QT_QMAKE_EXECUTABLE '/usr/bin/qmake-qt4') # DEBUB, WORK-AROUND: Force the use of QT4 (when multiple versions are installed) +SET(QT_QMAKE_EXECUTABLE '/usr/bin/qmake-qt4') # DEBUB, WORK-AROUND: Force the use of QT4 (when multiple versions are installed) FIND_PACKAGE(Qt4 REQUIRED) # Include Qt headers (needed for compile) diff --git a/thirdparty/jsoncpp/include/json/features.h b/thirdparty/jsoncpp/include/json/features.h index 5a9adec1..ac25b887 100644 --- a/thirdparty/jsoncpp/include/json/features.h +++ b/thirdparty/jsoncpp/include/json/features.h @@ -5,28 +5,28 @@ namespace Json { - /** \brief Configuration passed to reader and writer. + /** @brief Configuration passed to reader and writer. * This configuration object can be used to force the Reader or Writer * to behave in a standard conforming way. */ class JSON_API Features { public: - /** \brief A configuration that allows all features and assumes all strings are UTF-8. + /** @brief A configuration that allows all features and assumes all strings are UTF-8. * - C & C++ comments are allowed * - Root object can be any JSON value * - Assumes Value strings are encoded in UTF-8 */ static Features all(); - /** \brief A configuration that is strictly compatible with the JSON specification. + /** @brief A configuration that is strictly compatible with the JSON specification. * - Comments are forbidden. * - Root object must be either an array or an object value. * - Assumes Value strings are encoded in UTF-8 */ static Features strictMode(); - /** \brief Initialize the configuration like JsonConfig::allFeatures; + /** @brief Initialize the configuration like JsonConfig::allFeatures; */ Features(); diff --git a/thirdparty/jsoncpp/include/json/reader.h b/thirdparty/jsoncpp/include/json/reader.h index ee1d6a24..95da3767 100644 --- a/thirdparty/jsoncpp/include/json/reader.h +++ b/thirdparty/jsoncpp/include/json/reader.h @@ -10,7 +10,7 @@ namespace Json { - /** \brief Unserialize a JSON document into a Value. + /** @brief Unserialize a JSON document into a Value. * */ class JSON_API Reader @@ -19,17 +19,17 @@ namespace Json { typedef char Char; typedef const Char *Location; - /** \brief Constructs a Reader allowing all features + /** @brief Constructs a Reader allowing all features * for parsing. */ Reader(); - /** \brief Constructs a Reader allowing the specified feature set + /** @brief Constructs a Reader allowing the specified feature set * for parsing. */ Reader( const Features &features ); - /** \brief Read a Value from a JSON document. + /** @brief Read a Value from a JSON document. * \param document UTF-8 encoded string containing the document to read. * \param root [out] Contains the root value of the document if it was * successfully parsed. @@ -43,7 +43,7 @@ namespace Json { Value &root, bool collectComments = true ); - /** \brief Read a Value from a JSON document. + /** @brief Read a Value from a JSON document. * \param document UTF-8 encoded string containing the document to read. * \param root [out] Contains the root value of the document if it was * successfully parsed. @@ -57,13 +57,13 @@ namespace Json { Value &root, bool collectComments = true ); - /// \brief Parse from input stream. + /// @brief Parse from input stream. /// \see Json::operator>>(std::istream&, Json::Value&). bool parse( std::istream &is, Value &root, bool collectComments = true ); - /** \brief Returns a user friendly string that list errors in the parsed document. + /** @brief Returns a user friendly string that list errors in the parsed document. * \return Formatted error message with the list of errors with their location in * the parsed document. An empty string is returned if no error occurred * during parsing. @@ -165,7 +165,7 @@ namespace Json { bool collectComments_; }; - /** \brief Read from 'sin' into 'root'. + /** @brief Read from 'sin' into 'root'. Always keep comments from the input JSON. diff --git a/thirdparty/jsoncpp/include/json/value.h b/thirdparty/jsoncpp/include/json/value.h index 58bfd88e..7e56ded6 100644 --- a/thirdparty/jsoncpp/include/json/value.h +++ b/thirdparty/jsoncpp/include/json/value.h @@ -14,11 +14,11 @@ # include # endif -/** \brief JSON (JavaScript Object Notation). +/** @brief JSON (JavaScript Object Notation). */ namespace Json { - /** \brief Type of the value held by a Value object. + /** @brief Type of the value held by a Value object. */ enum ValueType { @@ -45,7 +45,7 @@ namespace Json { // typedef CppTL::AnyEnumerator EnumValues; //# endif - /** \brief Lightweight wrapper to tag static string. + /** @brief Lightweight wrapper to tag static string. * * Value constructor and objectValue member assignement takes advantage of the * StaticString and avoid the cost of string duplication when storing the @@ -81,7 +81,7 @@ namespace Json { const char *str_; }; - /** \brief Represents a JSON value. + /** @brief Represents a JSON value. * * This class is a discriminated union wrapper that can represents a: * - signed integer [range: Value::minInt - Value::maxInt] @@ -166,7 +166,7 @@ namespace Json { #endif // ifndef JSONCPP_DOC_EXCLUDE_IMPLEMENTATION public: - /** \brief Create a default Value of the given type. + /** @brief Create a default Value of the given type. This is a very useful constructor. To create an empty array, pass arrayValue. @@ -187,7 +187,7 @@ namespace Json { Value( double value ); Value( const char *value ); Value( const char *beginValue, const char *endValue ); - /** \brief Constructs a value from a static string. + /** @brief Constructs a value from a static string. * Like other value string constructor but do not duplicate the string for * internal storage. The given string must remain alive after the call to this @@ -250,7 +250,7 @@ namespace Json { /// Number of values in array or object UInt size() const; - /// \brief Return true if empty array, empty object, or null; + /// @brief Return true if empty array, empty object, or null; /// otherwise, false. bool empty() const; @@ -285,7 +285,7 @@ namespace Json { const Value &defaultValue ) const; /// Return true if index < size(). bool isValidIndex( UInt index ) const; - /// \brief Append value to array at the end. + /// @brief Append value to array at the end. /// /// Equivalent to jsonvalue[jsonvalue.size()] = value; Value &append( const Value &value ); @@ -298,7 +298,7 @@ namespace Json { Value &operator[]( const std::string &key ); /// Access an object value by name, returns null if there is no member with that name. const Value &operator[]( const std::string &key ) const; - /** \brief Access an object value by name, create a null member if it does not exist. + /** @brief Access an object value by name, create a null member if it does not exist. * If the object as no entry for that name, then the member name used to store * the new entry is not duplicated. @@ -327,7 +327,7 @@ namespace Json { Value get( const CppTL::ConstString &key, const Value &defaultValue ) const; # endif - /// \brief Remove and return the named member. + /// @brief Remove and return the named member. /// /// Do nothing if it did not exist. /// \return the removed Value, or null. @@ -346,7 +346,7 @@ namespace Json { bool isMember( const CppTL::ConstString &key ) const; # endif - /// \brief Return a list of the member names. + /// @brief Return a list of the member names. /// /// If null, return an empty list. /// \pre type() is objectValue or nullValue @@ -446,7 +446,7 @@ namespace Json { }; - /** \brief Experimental and untested: represents an element of the "path" to access a node. + /** @brief Experimental and untested: represents an element of the "path" to access a node. */ class PathArgument { @@ -470,7 +470,7 @@ namespace Json { Kind kind_; }; - /** \brief Experimental and untested: represents a "path" to access a node. + /** @brief Experimental and untested: represents a "path" to access a node. * * Syntax: * - "." => root node @@ -513,7 +513,7 @@ namespace Json { Args args_; }; - /** \brief Experimental do not use: Allocator to customize member name and string value memory management done by Value. + /** @brief Experimental do not use: Allocator to customize member name and string value memory management done by Value. * * - makeMemberName() and releaseMemberName() are called to respectively duplicate and * free an Json::objectValue member name. @@ -535,7 +535,7 @@ namespace Json { }; #ifdef JSON_VALUE_USE_INTERNAL_MAP - /** \brief Allocator to customize Value internal map. + /** @brief Allocator to customize Value internal map. * Below is an example of a simple implementation (default implementation actually * use memory pool for speed). * \code @@ -592,7 +592,7 @@ namespace Json { virtual void releaseMapLink( ValueInternalLink *link ) = 0; }; - /** \brief ValueInternalMap hash-map bucket chain link (for internal use only). + /** @brief ValueInternalMap hash-map bucket chain link (for internal use only). * \internal previous_ & next_ allows for bidirectional traversal. */ class JSON_API ValueInternalLink @@ -615,7 +615,7 @@ namespace Json { }; - /** \brief A linked page based hash-table implementation used internally by Value. + /** @brief A linked page based hash-table implementation used internally by Value. * \internal ValueInternalMap is a tradional bucket based hash-table, with a linked * list in each bucket to handle collision. There is an addional twist in that * each node of the collision linked list is a page containing a fixed amount of @@ -714,7 +714,7 @@ namespace Json { BucketIndex itemCount_; }; - /** \brief A simplified deque implementation used internally by Value. + /** @brief A simplified deque implementation used internally by Value. * \internal * It is based on a list of fixed "page", each page contains a fixed number of items. * Instead of using a linked-list, a array of pointer is used for fast item look-up. @@ -785,7 +785,7 @@ namespace Json { PageIndex pageCount_; }; - /** \brief Experimental: do not use. Allocator to customize Value internal array. + /** @brief Experimental: do not use. Allocator to customize Value internal array. * Below is an example of a simple implementation (actual implementation use * memory pool). \code @@ -851,7 +851,7 @@ public: // overridden from ValueArrayAllocator virtual ValueInternalArray *newArray() = 0; virtual ValueInternalArray *newArrayCopy( const ValueInternalArray &other ) = 0; virtual void destructArray( ValueInternalArray *array ) = 0; - /** \brief Reallocate array page index. + /** @brief Reallocate array page index. * Reallocates an array of pointer on each page. * \param indexes [input] pointer on the current index. May be \c NULL. * [output] pointer on the new index of at least @@ -873,7 +873,7 @@ public: // overridden from ValueArrayAllocator #endif // #ifdef JSON_VALUE_USE_INTERNAL_MAP - /** \brief base class for Value iterators. + /** @brief base class for Value iterators. * */ class ValueIteratorBase @@ -943,7 +943,7 @@ public: // overridden from ValueArrayAllocator #endif }; - /** \brief const iterator for object and array value. + /** @brief const iterator for object and array value. * */ class ValueConstIterator : public ValueIteratorBase @@ -1002,7 +1002,7 @@ public: // overridden from ValueArrayAllocator }; - /** \brief Iterator for object and array value. + /** @brief Iterator for object and array value. */ class ValueIterator : public ValueIteratorBase { diff --git a/thirdparty/jsoncpp/include/json/writer.h b/thirdparty/jsoncpp/include/json/writer.h index 5f4b83be..706c8e6a 100644 --- a/thirdparty/jsoncpp/include/json/writer.h +++ b/thirdparty/jsoncpp/include/json/writer.h @@ -10,7 +10,7 @@ namespace Json { class Value; - /** \brief Abstract class for writers. + /** @brief Abstract class for writers. */ class JSON_API Writer { @@ -20,7 +20,7 @@ namespace Json { virtual std::string write( const Value &root ) = 0; }; - /** \brief Outputs a Value in JSON format without formatting (not human friendly). + /** @brief Outputs a Value in JSON format without formatting (not human friendly). * * The JSON document is written in a single line. It is not intended for 'human' consumption, * but may be usefull to support feature such as RPC where bandwith is limited. @@ -44,7 +44,7 @@ namespace Json { bool yamlCompatiblityEnabled_; }; - /** \brief Writes a Value in JSON format in a human friendly way. + /** @brief Writes a Value in JSON format in a human friendly way. * * The rules for line break and indent are as follow: * - Object value: @@ -69,7 +69,7 @@ namespace Json { virtual ~StyledWriter(){} public: // overridden from Writer - /** \brief Serialize a Value in JSON format. + /** @brief Serialize a Value in JSON format. * \param root Value to serialize. * \return String containing the JSON document that represents the root value. */ @@ -99,7 +99,7 @@ namespace Json { bool addChildValues_; }; - /** \brief Writes a Value in JSON format in a human friendly way, + /** @brief Writes a Value in JSON format in a human friendly way, to a stream rather than to a string. * * The rules for line break and indent are as follow: @@ -126,7 +126,7 @@ namespace Json { ~StyledStreamWriter(){} public: - /** \brief Serialize a Value in JSON format. + /** @brief Serialize a Value in JSON format. * \param out Stream to write to. (Can be ostringstream, e.g.) * \param root Value to serialize. * \note There is no point in deriving from Writer, since write() should not return a value. @@ -163,7 +163,7 @@ namespace Json { std::string JSON_API valueToString( bool value ); std::string JSON_API valueToQuotedString( const char *value ); - /// \brief Output using the StyledStreamWriter. + /// @brief Output using the StyledStreamWriter. /// \see Json::operator>>() std::ostream& operator<<( std::ostream&, const Value &root );