DD::Image::OutputContext Class Reference

List of all members.

Public Types

enum  ProxySetting {
  PROXY_OFF, PROXY_NEVER, PROXY_SCALE_DOWN, PROXY_NEAREST,
  PROXY_ALWAYS
}

Public Member Functions

double frame () const
void setFrame (double v)
void frame (double v)
int view () const
void setView (int v)
void view (int v)
ProxySetting proxy () const
void setProxy (ProxySetting v)
float scale_x () const
float scale_y () const
float translate_x () const
float translate_y () const
void setProxyscale (float scale)
void setProxyscale (float sx, float sy)
void setProxyscale (const Format &fullsize, const Format &proxysize)
void setProxyscale (const Matrix4 &)
void scale (float scale)
void scale (float sx, float sy)
void translate (float x, float y)
bool isIdentity () const
void to_proxy (Matrix4 &) const
void to_proxy_wh (double &w, double &h) const
void to_proxy_wh (float &w, float &h) const
double to_proxy_w (double w) const
double to_proxy_h (double w) const
void to_proxy_xy (double &x, double &y) const
void to_proxy_xy (float &x, float &y) const
double to_proxy_x (double w) const
double to_proxy_y (double w) const
double from_proxy_x (double x) const
double from_proxy_y (double y) const
void to_proxy_box (DD::Image::Box &box) const
void to_proxy_area (double &w, double &h) const
double to_proxy_area (double area) const
void to_proxy (const Format &from, Format &to) const
const Formatto_proxy_rel (const Format &from, Format &to, const OutputContext &) const
double to_proxy_pixel_aspect (double pa) const
void from_proxy (Matrix4 &) const
void from_proxy_xy (double &x, double &y) const
void from_proxy_wh (double &w, double &h) const
void from_proxy_xy (float &x, float &y) const
void from_proxy_wh (float &w, float &h) const
double from_proxy_area (double area) const
double from_proxy_pixel_aspect (double pa) const
void append (Hash &) const
void appendProxy (Hash &hash) const
 Append the values affecting proxy scaling to the hash (i.e. not frame or view).
bool operator== (const OutputContext &other) const
bool operator< (const OutputContext &other) const
bool operator!= (const OutputContext &other) const
const std::string & viewname () const
bool sameProxy (const DD::Image::OutputContext &other) const

Static Public Member Functions

static const OutputContextdefaultContext ()
static const std::string & viewname (int v)
static const std::string & viewshort (int v)
static int viewcount ()
static bool MultiView ()
static int lookup_view (const std::string &viewname)
static void set_viewnames (const std::string &s)

Static Public Attributes

static const OutputContext default_
static void(* create_view )(const std::string &s)

Friends

std::ostream & operator<< (std::ostream &o, const OutputContext &)


Detailed Description

This is a block of data that is passed *up* the Op tree. The context modifies the values that are stored by knobs. An Op can further use information from it (such as the frame number) to modify it's behavior, by implementing Op::setOutputContext(). And an Op can modify the context that is used by each input, by implementing Op::inputContext().

Member Enumeration Documentation

Enumerator:
PROXY_OFF  Nuke's proxy mode is turned off.
PROXY_NEVER  Always use full-size image.
PROXY_SCALE_DOWN  Use smallest image >= desired size, or largest if none.
PROXY_NEAREST  Use image closest to the desired size.
PROXY_ALWAYS  Always use proxy image.


Member Function Documentation

void DD::Image::OutputContext::setProxy ( OutputContext::ProxySetting  v  )  [inline]

Change how proxy vs full-size files are chosen in the Read operator. This decision is actually done by code in Nuke. This is actually an independent setting from setProxyscale() but normally the the scale is not set unless this is turned on as well.

void DD::Image::OutputContext::setProxyscale ( float  scale  )  [inline]

Set to_proxy() to scale coordinates by the given factor (which should be less or equal to 1).

Referenced by DD::Image::Read::_validate().

void OutputContext::setProxyscale ( const Format fullsize,
const Format proxysize 
)

Set the scaling to the conversion from full to proxy.

References DD::Image::Format::pixel_aspect(), DD::Image::Box::t(), DD::Image::Box::w(), DD::Image::Box::x(), and DD::Image::Box::y().

void OutputContext::setProxyscale ( const Matrix4 m  ) 

Set the scaling to the transform in the matrix (which had better only have scale and translations).

References DD::Image::Matrix4::a00, DD::Image::Matrix4::a03, DD::Image::Matrix4::a11, DD::Image::Matrix4::a13, and DD::Image::Matrix4::a33.

void DD::Image::OutputContext::scale ( float  scale  )  [inline]

Multiply the proxy scaling by the factor (which is normally less or equal to 1). The picture output by the operator will be scaled by this factor.

void DD::Image::OutputContext::translate ( float  x,
float  y 
) [inline]

Translate the to_proxy_xy() by the given number of pixels. The picture output by the operator will be translated by this factor.

void OutputContext::to_proxy ( Matrix4 m  )  const

Multiply the matrix by the transformation from full-size space to proxy space. If the matrix was the identity, it will now be a transform from full size to proxy.

References DD::Image::Matrix4::scale(), and DD::Image::Matrix4::translate().

Referenced by DD::Image::Read::_validate().

void DD::Image::OutputContext::to_proxy_wh ( double &  w,
double &  h 
) const [inline]

Transform a vector/distance from full size to proxy space. This is different than to_proxy_xy if there is a translation of the origin.

Referenced by DD::Image::Read::_validate().

void DD::Image::OutputContext::to_proxy_xy ( double &  x,
double &  y 
) const [inline]

Transform an xy position from full size to proxy space.

Referenced by DD::Image::Read::_validate().

void DD::Image::OutputContext::to_proxy_area ( double &  w,
double &  h 
) const [inline]

Return the size of a rectangle with the same area as the 0,0,w,h rectangle transformed to proxy scale, and approximatly the same shape. This is the same as to_proxy_wh as long as there is no rotation. The shape exactly matches as long as rotations are 90 degrees.

double DD::Image::OutputContext::to_proxy_area ( double  area  )  const [inline]

Return the area of a shape of the given area when converted from full size to proxy space.

void OutputContext::to_proxy ( const Format from,
Format to 
) const

Replace the contents of to with the scaled version of from. Integer values are rounded to the nearest match. The name of the format is set to null.

References fast_rint(), DD::Image::Format::height(), DD::Image::Format::name(), DD::Image::Format::pixel_aspect(), DD::Image::Box::r(), DD::Image::Box::t(), DD::Image::Format::width(), DD::Image::Box::x(), and DD::Image::Box::y().

const Format * OutputContext::to_proxy_rel ( const Format from,
Format to,
const OutputContext rel 
) const

from is the result of rel.to_proxy. Undoes the rel.to_proxy, and then applies this.to_proxy to the result. If this results in from then from is returned. Otherwise the result is written over to and that is returned. This is a weird action used by Nuke.

References a, d, e, f, fast_rint(), DD::Image::Format::height(), DD::Image::Format::name(), DD::Image::Format::pixel_aspect(), DD::Image::Box::r(), DD::Image::Box::t(), DD::Image::Format::width(), DD::Image::Box::x(), and DD::Image::Box::y().

double DD::Image::OutputContext::to_proxy_pixel_aspect ( double  pa  )  const [inline]

Convert a pixel aspect. I.e if an image with pixel aspect of pa is rescaled by the proxy scaling, it's pixel aspect will be this.

void OutputContext::from_proxy ( Matrix4 m  )  const

Multiply the matrix by the transformation from proxy space to full-size space. If the matrix was the identity, it will now be a transform from proxy to full-size;

References DD::Image::Matrix4::scale(), and DD::Image::Matrix4::translate().

void DD::Image::OutputContext::from_proxy_xy ( double &  x,
double &  y 
) const [inline]

Transform an xy position from proxy space to full size.

Referenced by DD::Image::Read::_validate(), and DD::Image::Read::append().

void DD::Image::OutputContext::from_proxy_wh ( double &  w,
double &  h 
) const [inline]

Transform a vector/distance from proxy space to full size. This is different than from_proxy_xy if there is a translation of the origin.

Referenced by DD::Image::Read::_validate(), and DD::Image::Read::append().

double DD::Image::OutputContext::from_proxy_area ( double  area  )  const [inline]

Return the area of a shape of the given area when converted from proxy space to full size.

void OutputContext::append ( Hash hash  )  const

Add the contents of this to the hash, thus producing a different hash for any different setting of OutputContext.

References DD::Image::Hash::append().

int OutputContext::viewcount (  )  [static]

how many views exist. View 0 is always an extra view called 'default'. If there is one view, this is will be view 1.

Referenced by MultiView().

bool OutputContext::MultiView (  )  [static]

whether or not there are more than one actual view (not counting the hidden 'default' view)

References viewcount().



©2009 The Foundry Visionmongers, Ltd. All Rights Reserved.
www.thefoundry.co.uk