📄 imfheader.h
字号:
/////////////////////////////////////////////////////////////////////////////// Copyright (c) 2004, Industrial Light & Magic, a division of Lucas// Digital Ltd. LLC// // All rights reserved.// // Redistribution and use in source and binary forms, with or without// modification, are permitted provided that the following conditions are// met:// * Redistributions of source code must retain the above copyright// notice, this list of conditions and the following disclaimer.// * Redistributions in binary form must reproduce the above// copyright notice, this list of conditions and the following disclaimer// in the documentation and/or other materials provided with the// distribution.// * Neither the name of Industrial Light & Magic nor the names of// its contributors may be used to endorse or promote products derived// from this software without specific prior written permission. // // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE./////////////////////////////////////////////////////////////////////////////#ifndef INCLUDED_IMF_HEADER_H#define INCLUDED_IMF_HEADER_H//-----------------------------------------------------------------------------//// class Header////-----------------------------------------------------------------------------#include <ImfLineOrder.h>#include <ImfCompression.h>#include <ImfName.h>#include <ImfTileDescription.h>#include <ImfInt64.h>#include "ImathVec.h"#include "ImathBox.h"#include "IexBaseExc.h"#include <map>#include <iosfwd>namespace Imf {class Attribute;class ChannelList;class IStream;class OStream;class PreviewImage;class Header{ public: //---------------------------------------------------------------- // Default constructor -- the display window and the data window // are both set to Box2i (V2i (0, 0), V2i (width-1, height-1). //---------------------------------------------------------------- Header (int width = 64, int height = 64, float pixelAspectRatio = 1, const Imath::V2f &screenWindowCenter = Imath::V2f (0, 0), float screenWindowWidth = 1, LineOrder lineOrder = INCREASING_Y, Compression = ZIP_COMPRESSION); //-------------------------------------------------------------------- // Constructor -- the data window is specified explicitly; the display // window is set to Box2i (V2i (0, 0), V2i (width-1, height-1). //-------------------------------------------------------------------- Header (int width, int height, const Imath::Box2i &dataWindow, float pixelAspectRatio = 1, const Imath::V2f &screenWindowCenter = Imath::V2f (0, 0), float screenWindowWidth = 1, LineOrder lineOrder = INCREASING_Y, Compression = ZIP_COMPRESSION); //---------------------------------------------------------- // Constructor -- the display window and the data window are // both specified explicitly. //---------------------------------------------------------- Header (const Imath::Box2i &displayWindow, const Imath::Box2i &dataWindow, float pixelAspectRatio = 1, const Imath::V2f &screenWindowCenter = Imath::V2f (0, 0), float screenWindowWidth = 1, LineOrder lineOrder = INCREASING_Y, Compression = ZIP_COMPRESSION); //----------------- // Copy constructor //----------------- Header (const Header &other); //----------- // Destructor //----------- ~Header (); //----------- // Assignment //----------- Header & operator = (const Header &other); //--------------------------------------------------------------- // Add an attribute: // // insert(n,attr) If no attribute with name n exists, a new // attribute with name n, and the same type as // attr, is added, and the value of attr is // copied into the new attribute. // // If an attribute with name n exists, and its // type is the same as attr, the value of attr // is copied into this attribute. // // If an attribute with name n exists, and its // type is different from attr, an Iex::TypeExc // is thrown. // //--------------------------------------------------------------- void insert (const char name[], const Attribute &attribute); //------------------------------------------------------------------ // Access to existing attributes: // // [n] Returns a reference to the attribute // with name n. If no attribute with // name n exists, an Iex::ArgExc is thrown. // // typedAttribute<T>(n) Returns a reference to the attribute // with name n and type T. If no attribute // with name n exists, an Iex::ArgExc is // thrown. If an attribute with name n // exists, but its type is not T, an // Iex::TypeExc is thrown. // // findTypedAttribute<T>(n) Returns a pointer to the attribute with // name n and type T, or 0 if no attribute // with name n and type T exists. // //------------------------------------------------------------------ Attribute & operator [] (const char name[]); const Attribute & operator [] (const char name[]) const; template <class T> T& typedAttribute (const char name[]); template <class T> const T& typedAttribute (const char name[]) const; template <class T> T* findTypedAttribute (const char name[]); template <class T> const T* findTypedAttribute (const char name[]) const; //--------------------------------------------- // Iterator-style access to existing attributes //--------------------------------------------- typedef std::map <Name, Attribute *> AttributeMap; class Iterator; class ConstIterator; Iterator begin (); ConstIterator begin () const; Iterator end (); ConstIterator end () const; Iterator find (const char name[]); ConstIterator find (const char name[]) const; //-------------------------------- // Access to predefined attributes //-------------------------------- Imath::Box2i & displayWindow (); const Imath::Box2i & displayWindow () const; Imath::Box2i & dataWindow (); const Imath::Box2i & dataWindow () const; float & pixelAspectRatio (); const float & pixelAspectRatio () const; Imath::V2f & screenWindowCenter (); const Imath::V2f & screenWindowCenter () const; float & screenWindowWidth (); const float & screenWindowWidth () const; ChannelList & channels (); const ChannelList & channels () const; LineOrder & lineOrder (); const LineOrder & lineOrder () const; Compression & compression (); const Compression & compression () const; //---------------------------------------------------------------------- // Tile Description: // // The tile description is a TileDescriptionAttribute whose name // is "tiles". The "tiles" attribute must be present in any tiled // image file. When present, it describes various properties of the // tiles that make up the file. // // Convenience functions: // // setTileDescription(td) // calls insert ("tiles", TileDescriptionAttribute (td)) // // tileDescription() // returns typedAttribute<TileDescriptionAttribute>("tiles").value() // // hasTileDescription() // return findTypedAttribute<TileDescriptionAttribute>("tiles") != 0 // //---------------------------------------------------------------------- void setTileDescription (const TileDescription & td); TileDescription & tileDescription (); const TileDescription & tileDescription () const; bool hasTileDescription() const; //---------------------------------------------------------------------- // Preview image: // // The preview image is a PreviewImageAttribute whose name is "preview". // This attribute is special -- while an image file is being written, // the pixels of the preview image can be changed repeatedly by calling // OutputFile::updatePreviewImage(). // // Convenience functions: // // setPreviewImage(p) // calls insert ("preview", PreviewImageAttribute (p)) // // previewImage() // returns typedAttribute<PreviewImageAttribute>("preview").value() // // hasPreviewImage() // return findTypedAttribute<PreviewImageAttribute>("preview") != 0 // //---------------------------------------------------------------------- void setPreviewImage (const PreviewImage &p); PreviewImage & previewImage (); const PreviewImage & previewImage () const; bool hasPreviewImage () const;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -