Files
opennurbs/opennurbs_linear_workflow.h
Bozo The Builder f26b1ba26a Sync changes from upstream repository
First publish of public opennurbs from 8.x source
2022-07-28 11:12:21 -07:00

82 lines
2.8 KiB
C++

/*
//
// Copyright (c) 1993-2022 Robert McNeel & Associates. All rights reserved.
// OpenNURBS, Rhinoceros, and Rhino3D are registered trademarks of Robert
// McNeel & Associates.
//
// THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY.
// ALL IMPLIED WARRANTIES OF FITNESS FOR ANY PARTICULAR PURPOSE AND OF
// MERCHANTABILITY ARE HEREBY DISCLAIMED.
//
// For complete openNURBS copyright information see <http://www.opennurbs.org>.
//
////////////////////////////////////////////////////////////////
*/
#if !defined(ON_LINEAR_WORKFLOW_INC_)
#define ON_LINEAR_WORKFLOW_INC_
class ON_CLASS ON_LinearWorkflow final
{
public:
ON_LinearWorkflow();
ON_LinearWorkflow(ON_XMLNode& model_node);
ON_LinearWorkflow(const ON_LinearWorkflow& lw);
~ON_LinearWorkflow();
const ON_LinearWorkflow& operator = (const ON_LinearWorkflow& lw);
bool operator == (const ON_LinearWorkflow& lw);
bool operator != (const ON_LinearWorkflow& lw);
// Returns the linear workflow active state for textures.
bool PreProcessTextures(void) const;
// Sets the linear workflow (pre-process) active state for textures.
void SetPreProcessTextures(bool b);
// Returns the linear workflow active state for individual colors.
bool PreProcessColors(void) const;
// Sets the linear workflow (pre-process) active state for individual colors.
void SetPreProcessColors(bool b);
// Returns the pre-process gamma for input textures and colors.
float PreProcessGamma(void) const;
// Set pre-process gamma. This will generally be >= 1.0 (usually 2.2).
// This is the actual value applied in pre-process.
void SetPreProcessGamma(float gamma);
// Get post-process gamma enabled state.
bool PostProcessGammaOn(void) const;
// Set post-process gamma enabled state.
void SetPostProcessGammaOn(bool on);
// Returns the post-process gamma for frame buffer. This is not the value applied; it's the value that
// appears in the UI. See PostProcessGammaReciprocal().
float PostProcessGamma(void) const;
// Set post-process gamma. This will generally be >= 1.0 (usually 2.2).
// The actual value to be applied in post-process is the reciprocal.
void SetPostProcessGamma(float gamma);
// Returns: Gamma reciprocal for frame buffer. This is the value that is applied to each color channel
// for post-process and is supplied here as an optimization.
float PostProcessGammaReciprocal(void) const;
// Applies pre-process gamma correction to a color if linear workflow is active.
// for_texture is true if the color is part of a texture. */
void ApplyPreProcessGamma(ON_4fColor& col, bool for_texture) const;
// Returns the CRC of gamma and linear workflow active state.
ON__UINT32 DataCRC(ON__UINT32 current_remainder) const;
public:
class CImpl;
CImpl* m_impl;
};
#endif